[請益] 陣列合併的問題

看板PHP作者 (被遺忘的)時間14年前 (2011/08/16 16:04), 編輯推噓1(101)
留言2則, 1人參與, 最新討論串2/2 (看更多)
我有以下兩個陣列 $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)

08/17 09:02, , 1F
補充:如果兩個變數都是陣列,可以直接$arr1 += arr2
08/17 09:02, 1F

08/17 09:03, , 2F
效果等同array_merge
08/17 09:03, 2F
文章代碼(AID): #1EIYIUuY (PHP)
文章代碼(AID): #1EIYIUuY (PHP)