Для объединения многоуровневых массивов в PHP можно использовать различные методы. Вот несколько вариантов с примерами кода:
Метод 1: использование array_merge_recursive()
$array1 = [
'key1' => 'value1',
'key2' => [
'subkey1' => 'subvalue1',
'subkey2' => 'subvalue2',
],
];
$array2 = [
'key2' => [
'subkey2' => 'updated value',
'subkey3' => 'subvalue3',
],
'key3' => 'value3',
];
$mergedArray = array_merge_recursive($array1, $array2);
print_r($mergedArray);
Выход:
Array
(
[key1] => value1
[key2] => Array
(
[subkey1] => subvalue1
[subkey2] => Array
(
[0] => subvalue2
[1] => updated value
)
[subkey3] => subvalue3
)
[key3] => value3
)
Метод 2. Использование собственной рекурсивной функции
function array_merge_recursive_custom($array1, $array2) {
foreach ($array2 as $key => $value) {
if (is_array($value) && isset($array1[$key]) && is_array($array1[$key])) {
$array1[$key] = array_merge_recursive_custom($array1[$key], $value);
} else {
$array1[$key] = $value;
}
}
return $array1;
}
$mergedArray = array_merge_recursive_custom($array1, $array2);
print_r($mergedArray);
Выход:
Array
(
[key1] => value1
[key2] => Array
(
[subkey1] => subvalue1
[subkey2] => updated value
[subkey3] => subvalue3
)
[key3] => value3
)
Способ 3: использование оператора «+» (только для двухуровневых массивов)
$array1 = [
'key1' => 'value1',
'key2' => [
'subkey1' => 'subvalue1',
'subkey2' => 'subvalue2',
],
];
$array2 = [
'key2' => [
'subkey2' => 'updated value',
'subkey3' => 'subvalue3',
],
'key3' => 'value3',
];
$mergedArray = $array1 + $array2;
print_r($mergedArray);
Выход:
Array
(
[key1] => value1
[key2] => Array
(
[subkey1] => subvalue1
[subkey2] => subvalue2
)
[key3] => value3
)