Для объединения иерархических массивов в 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. Выберите тот, который лучше всего соответствует вашим потребностям.