PHP 数组 array_merge 和 数组 + 加号操作的区别

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()模式: 对于字符串索引, 相同的索引, 后面的数组会覆盖之前的已经存在的数据, 对于数字索引, 会生成新的数字索引附加到之前的数组中
原文地址:https://www.cnblogs.com/zakun/p/php-merge-plus.html