要递归地合并 PHP 多维数组,可以使用以下函数:
function array_merge_recursive_ex(array $array1, array $array2): array {
$merged = $array1;
foreach ($array2 as $key => $value) {
if (is_array($value) && isset($merged[$key]) && is_array($merged[$key])) {
$merged[$key] = array_merge_recursive_ex($merged[$key], $value);
} else {
$merged[$key] = $value;
}
}
return $merged;
}
这个函数接受两个数组作为参数,并返回一个新的数组。它会遍历第二个数组的每个元素,检查它们是否是数组。如果两个元素都是数组,则递归地调用 array_merge_recursive_ex
函数。否则,将第二个数组的值赋给合并后的数组。
以下是一个使用此函数的示例:
$array1 = [ 'a' => 'value1', 'b' => [ 'c' => 'value2', 'd' => [ 'e' => 'value3', ], ], ]; $array2 = [ 'f' => 'value4', 'b' => [ 'g' => 'value5', 'd' => [ 'h' => 'value6', ], ], ]; $mergedArray = array_merge_recursive_ex($array1, $array2); print_r($mergedArray);
输出结果:
Array ( [a] => value1 [b] => Array ( [c] => value2 [d] => Array ( [e] => value3 [h] => value6 ) [g] => value5 ) [f] => value4 )
这个示例中,$array1
和 $array2
的多维数组已经成功地合并。注意,当两个数组具有相同的键时,$array2
的值将覆盖 $array1
的值。