在陣列合併的時候總是會碰到是否會覆蓋的問題。因此。我做了一下總結。
先貼出結果。
對於 +
陣列中具有相同的鍵名的值會被覆蓋。不論是索引陣列還是關聯陣列
對於array_merge()函式。
如果是關聯陣列,如果含有相同的鍵名,後面的值會覆蓋前面的值。
如果是索引陣列,不會覆蓋原來的值,而是直接追加到後面。
<?php
$arr1 = array(0, 1, 2);
$arr2 = array(7, 8, 9, 10);
print_r($rest1 = $arr1 + $arr2); //0 1 2 10
print_r($rest2 = $arr2 + $arr1); //7 8 9 10
print_r(array_merge($arr1, $arr2)); //0 1 2 7 8 9 10
print_r(array_merge($arr2, $arr1)); //7 8 9 10 0 1 2
$arr3 = array('name' =>'zhangsan', 'age' => 25, 'gender' => 'man');
$arr4 = array('height' => 175, 'weight' => '120');
$arr5 = array('name' =>'lisi', 'age'=> 120 );
print_r($rest3 = $arr3 + $arr4);
/* array
( [name] => zhangsan
[age] => 25
[gender] => man
[height] => 175
[weight] => 120
) */
print_r($rest4 = $arr4 + $arr3);
/* array
( [height] => 175
[weight] => 120
[name] => zhangsan
[age] => 25
[gender] => man
) */
print_r(array_merge($arr3, $arr4));
/* array
( [name] => zhangsan
[age] => 25
[gender] => man
[height] => 175
[weight] => 120
) */
print_r(array_merge($arr4, $arr3));
/* array
( [height] => 175
[weight] => 120
[name] => zhangsan
[age] => 25
[gender] => man
) */
print_r($rest3 = $arr3 + $arr5);
/* array
( [name] => zhangsan
[age] => 25
[gender] => man
) */
print_r($rest5 = $arr5 + $arr3);
/* array
( [name] => lisi
[age] => 120
[gender] => man
*/print_r(array_merge($arr5, $arr3));
/* array
( [name] => zhangsan
[age] => 25
[gender] => man
) */
print_r(array_merge($arr3, $arr5));
/* array
( [name] => lisi
[age] => 120
[gender] => man
) */
array merge和 號合併陣列的區別
先看栗子 a 51 12345 b 10 5678 c c array merge c,a,b array 0 12345 1 5678 a 51 12345 b 51 5678 c c array merge c,a,b print r c array 0 12345 1 5678 a aa 12...
php中陣列 和array merge區別
主要區別在與兩個或多個陣列在合併時,出現相同的鍵名時處理方式不一樣 一 當鍵名為數字時,array merge不會覆蓋原來的值,會拋棄後面的值 created by phpstorm.user lzc date 2017 3 18 time 10 02 a 1,2,3 b 4,5,6 var dum...
array merge和加號的區別
結論 用加號合併陣列 既考慮數字索引的鍵值對,也考慮字串索引的鍵值對,用前邊陣列的值覆蓋後邊的鍵名相同的值 用array merge 合併陣列 只考慮字串索引的鍵值對,用後邊陣列的值覆蓋掉前面陣列中鍵名相同的值,數字索引的值則不覆蓋,同時保留 另外 array merge 會重排兩個陣列的數字索引,...