0
我試圖合併兩個數組遞歸而以下一些簡單的規則: 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;
}
}
}
但它似乎沒有工作和陣列似乎不受影響。我究竟做錯了什麼?
即部分地工作,但仍然在ARRAY1的元件,其不被第二陣列設置,需要被設置爲'0',由此,他們仍然保持爲空。 – Aoi
@ user279988如果您發現我的答案有幫助,請記住用左邊的粗體接受它。 – hsz