PHP 数组 array_merge 和 数组 + 加号操作的区别
php中我们常使用
array_merge()
函数, 用来合并两个数组,例如:$a3 = array_merge($a1, $a2)
; 但是php中两个数组还可以直接使用操作符加号(+)相加, 例如:$a4 = $a1 + $a2
你知道他们的区别么 ?
来试下吧
$a1 = [0, 1, 2, 'name'=>'jack', 'age'=>23];
$a2 = [3, 4, 5, 6, 'name'=>'quinn', 'sex'=>1];
$a3 = $a1 + $a2;
$a4 = array_merge($a1, $a2);
执行结果: 输出json格式如下
{"0":0,"1":1,"2":2,"name":"jack","age":23,"3":6,"sex":1}
{"0":0,"1":1,"2":2,"name":"quinn","age":23,"3":3,"4":4,"5":5,"6":6,"sex":1}
结论
- 加号(+)模式: 无论是数字索引还是字符串索引, 只要在前一个数组中存在, 后面的数组都无法覆盖之前已经存在的索引, 前面数组没有的索引都会附加到之前的数组中
- array_merge()模式: 对于字符串索引, 相同的索引, 后面的数组会覆盖之前的已经存在的数据, 对于数字索引, 会生成新的数字索引附加到之前的数组中