Объединение иерархических массивов в PHP с примерами кода

Для объединения иерархических массивов в PHP можно использовать различные методы. Вот несколько примеров:

Метод 1: Рекурсивная функция

function mergeArraysRecursive($array1, $array2)
{
    foreach ($array2 as $key => $value) {
        if (isset($array1[$key]) && is_array($array1[$key]) && is_array($value)) {
            $array1[$key] = mergeArraysRecursive($array1[$key], $value);
        } else {
            $array1[$key] = $value;
        }
    }
    return $array1;
}
$array1 = [
    'key1' => [
        'subkey1' => 'value1',
        'subkey2' => 'value2',
    ],
    'key2' => 'value3',
];
$array2 = [
    'key1' => [
        'subkey1' => 'newvalue1',
        'subkey3' => 'value4',
    ],
    'key3' => 'value5',
];
$result = mergeArraysRecursive($array1, $array2);
print_r($result);

Метод 2. Итеративный подход

function mergeArraysIterative($array1, $array2)
{
    $stack = [];
    array_push($stack, [$array1, $array2]);
    while (!empty($stack)) {
        [$a, $b] = array_pop($stack);
        foreach ($b as $key => $value) {
            if (isset($a[$key]) && is_array($a[$key]) && is_array($value)) {
                array_push($stack, [$a[$key], $value]);
            } else {
                $a[$key] = $value;
            }
        }
    }
    return $array1;
}
$array1 = [
    'key1' => [
        'subkey1' => 'value1',
        'subkey2' => 'value2',
    ],
    'key2' => 'value3',
];
$array2 = [
    'key1' => [
        'subkey1' => 'newvalue1',
        'subkey3' => 'value4',
    ],
    'key3' => 'value5',
];
$result = mergeArraysIterative($array1, $array2);
print_r($result);

Метод 3: использование array_merge_recursive()

$array1 = [
    'key1' => [
        'subkey1' => 'value1',
        'subkey2' => 'value2',
    ],
    'key2' => 'value3',
];
$array2 = [
    'key1' => [
        'subkey1' => 'newvalue1',
        'subkey3' => 'value4',
    ],
    'key3' => 'value5',
];
$result = array_merge_recursive($array1, $array2);
print_r($result);

Эти методы позволяют объединять иерархические массивы в PHP. Выберите тот, который лучше всего соответствует вашим потребностям.