我有兩個陣列:
$array1 = array('a' => 1, 'b' => 2, 'c' => 3); $array2 = array('d' => 4, 'e' => 5, 'f' => 6, 'a' => 'new value', '123' => 456);
我想合併它們並保留鍵和順序而不是重新索引! !
怎麼變成這樣?
Array ( [a] => new value [b] => 2 [c] => 3 [d] => 4 [e] => 5 [f] => 6 [123] => 456 )
我嘗試 array_merge() 但它不會保留鍵:
print_r(array_merge($array1, $array2)); Array ( [a] => 'new value' [b] => 2 [c] => 3 [d] => 4 [e] => 5 [f] => 6 [0] => 456 )
我嘗試使用聯合運算符,但它不會覆寫該元素:
print_r($array1 + $array2); Array ( [a] => 1 <-- not overwriting [b] => 2 [c] => 3 [d] => 4 [e] => 5 [f] => 6 [123] => 456 )
我嘗試交換位置,但順序錯誤,不是我的需要:
print_r($array2 + $array1); Array ( [d] => 4 [e] => 5 [f] => 6 [a] => new value [123] => 456 [b] => 2 [c] => 3 )
我不想使用循環,有沒有辦法獲得高效能?
#
假設我們有 3 個數組,如下所示。
現在,如果您想合併所有這些數組,並希望最終的數組包含鍵 0 in 0 和 1 in 1 鍵下的所有數組數據,依此類推。
然後你需要使用array_replace_recursive PHP函數,如下。
結果如下。
希望上述解決方案能夠最適合您的要求! !
您正在尋找
array_replace()
:自 PHP 5.3 起可用。
更新
您也可以使用聯合陣列運算子;它適用於舊版本,實際上也可能更快: