递归是一种编程技巧,它允许函数调用自身来解决问题。在 PHP 中,递归可以用来合并数组,特别是当数组包含嵌套数组时。
递归合并数组主要有两种类型:
递归合并数组常用于以下场景:
以下是一个深度合并数组的 PHP 示例代码:
function deepMerge($array1, $array2) {
$result = array_merge_recursive($array1, $array2);
foreach ($result as $key => $value) {
if (is_array($value) && isset($array1[$key]) && is_array($array1[$key])) {
$result[$key] = deepMerge($array1[$key], $value);
}
}
return $result;
}
$array1 = [
'a' => 1,
'b' => [
'c' => 2,
'd' => 3
]
];
$array2 = [
'b' => [
'd' => 4,
'e' => 5
],
'f' => 6
];
$mergedArray = deepMerge($array1, $array2);
print_r($mergedArray);
Array
(
[a] => 1
[b] => Array
(
[c] => 2
[d] => 4
[e] => 5
)
[f] => 6
)
原因:递归调用层级过多,超过了 PHP 的默认栈大小限制。
解决方法:
ini_set('xdebug.max_nesting_level', 1000);
来增加栈大小。原因:两个数组中存在相同的键,且值不是数组。
解决方法:
array_merge_recursive
:该函数会递归合并数组,但如果键相同且值不是数组,则后面的值会覆盖前面的值。通过以上方法,可以有效解决递归合并数组时遇到的问题。
没有搜到相关的沙龙
领取专属 10元无门槛券
手把手带您无忧上云