两者都可以将两个数组进行合并,但是array_merge表示合并,+运算符表示附加。两者区别如下
对于相同键名合并的问题,
使用array_merge时,后面的值会覆盖前一个值,如果数组包含数字键名,后面的值不会覆盖原来的值,而是附加到后面。
使用+运算符,第一个数组的键名会被保留。存在相同键名时,第一个数组中的同键名的元素会被保留,第二个数组中的元素会被忽略。
代码如下
<?php
//相同键名合并
$arr1 = ['a' => 'b'];
$arr2 = ['a' => 'c'];
//后者覆盖前者,结果为 ['a'=>'c']
print_r(array_merge($arr1, $arr2));
//前者保留,后者舍弃 ['a'=>'b']
print_r($arr1 + $arr2);
//数字键值重新编号
$arr1 = [1 => 'a', 3 => 'c'];
$arr2 = [2 => 'b', 4 => 'd'];
//重新编号,结果为 [0=>'a',1=>'c',2=>'b',3=>'d']
print_r(array_merge($arr1, $arr2));
//保留原键名,不会重新编号,结果为 [1=>'a',3=>'c',2=>'b',4=>'d']
print_r($arr1 + $arr2);