【发布时间】:2014-03-27 14:19:06
【问题描述】:
我正在尝试递归合并两个数组,同时遵循一些简单的规则: 1)从第二个数组中获取仅存在于第一个数组中且其值不是另一个数组的键的值。 2) 第一个数组中与第二个数组中没有匹配键的键应设置为零。
数组1
Array
(
[a_arr] => Array
(
[u1] => Array
(
[v] =>
[a] =>
[e] =>
[d] =>
)
[u2] => Array
(
[v] =>
[a] =>
[e] =>
[d] =>
)
)
[b_arr] => Array
(
)
)
数组 2:
Array
(
[a_arr] => Array
(
[u1] => Array
(
[a] => 1
[e] => 1
)
[u2] => Array
(
[v] => 1
)
[u3] => Array
(
[e] => 1
)
)
[b_arr] => Array
(
)
)
合并后的预期输出数组:
Array
(
[a_arr] => Array
(
[u1] => Array
(
[v] => 0
[a] => 1
[e] => 1
[d] => 0
)
[u2] => Array
(
[v] => 1
[a] => 0
[e] => 0
[d] => 0
)
)
[b_arr] => Array
(
)
)
我为此编写的函数是:
private function mergeArrayRecursive(&$arr1,&$arr2){
foreach($arr1 AS $k=>$v){
if(is_array($v)){
if(isset($arr2[$k])){
$this->mergeArrayRecursive($v,$arr2[$k]);
}
}
else if(isset($arr2[$k])){
$arr1[$k] = $arr2[$k];
}
else{
$arr1[$k] = 0;
}
}
}
但它似乎不起作用,数组似乎不受影响。我做错了什么?
【问题讨论】: