作者MacMini (被遺忘的)
看板PHP
標題[請益] 陣列合併的問題
時間Tue Aug 16 16:04:43 2011
我有以下兩個陣列
$array1 = array('a'=>'a','b'=>'b','c'=>'c',
'd'=>array('d1'=>'d1', 'd2'=>'d2')
);
$array2 = array('a'=>'a1','b'=>'b1'
'd'=>array('d1'=>'d1-1', 'd3'=>'d3')
)
我希望讓它變成
array('a'=>'a1','b'=>'b1','c'=>'c'
'd'=>array('d1'=>'d1-1','d2'=>'d2','d3'=>'d3')
);
也就是說 我需要array1 與 array2 合併
array2是array1的更新版 但是array2裡面不一定會有array1的key
我要怎麼做才會保有array1的內容且讓array2更新呢?
我試過
array_merge
但是他會將array1第二層的陣列內容完全取代
不會保有array1第二層的原始陣列內容
array_merge_recursive
這個會將舊有的值放在第一個將新資料放在後面 並不是取代
(應該是這樣吧?)
自問自答 (不知道這樣寫法正不正確)
function MY_array_merge($array1,$array2){
foreach($array2 as $key => $data){
if(is_array($data) && isset($array1[$key])){
$array1[$key] = MY_array_merge($array1[$key],$data);
}else{
$array1[$key] = $data;
}
}
return $array1;
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.32.228.158
※ 編輯: MacMini 來自: 114.32.228.158 (08/16 16:34)
1F:推 liaosankai:補充:如果兩個變數都是陣列,可以直接$arr1 += arr2 08/17 09:02
2F:→ liaosankai:效果等同array_merge 08/17 09:03