array merge 和 的區別

2021-07-24 15:45:31 字數 2137 閱讀 5511

在陣列合併的時候總是會碰到是否會覆蓋的問題。因此。我做了一下總結。

先貼出結果。

對於 +

陣列中具有相同的鍵名的值會被覆蓋。不論是索引陣列還是關聯陣列

對於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 會重排兩個陣列的數字索引,...