php
有2個函數常用語數組合并,他們是array_merge
和+
.本節來講一下兩者的區別.
索引數組
$arr1 = [1 => 'one', 3 => 'three'];
$arr2 = [1 => 'new one', 6 => 'six'];
$result1 = array_merge($arr1, $arr2);
$result2 = $arr1 + $arr2;
//output
$result1:
Array
(
[0] => one
[1] => three
[2] => new one
[3] => six
)
$result2:
Array
(
[1] => one
[3] => three
[6] => six
)
結論:
-
array_merge
就是簡單的數組追加,即使索引相同也不會出現覆蓋的情況。這也注定了新數組的索引會被重寫。變為0,1,2,3…. -
+
的方式在遇到索引相同時,保留前者拋棄后者
關聯數組
$arr3 = ['name' => '張三', 'age' => 21];
$arr4 = ['name' => '李四', 'age' => 22];
$result3 = array_merge($arr3, $arr4);
$result4 = $arr3 + $arr4;
dd($result3);
dd($result4);
//output
//result3:
Array
(
[name] => 李四
[age] => 22
)
//result4:
Array
(
[name] => 張三
[age] => 21
)
結論
-
array_merge
鍵名相同,后者覆蓋前者 -
+
依舊是保留前者拋棄后者