php array_merge和数组相加的区别

两个数据合并可以用array_merge函数也可以用+运算符进行合并操作 

$arr1 = array("a"=>"PHP","b"=>"java","python");

$arr2 = array("c" =>"ruby","d" => "c++","go","a"=> "swift");

$arr3 = array_merge($arr1,$arr);

$arr4 = $arr1 + $arr2;

但这两个方法合并数组还是有不小的区别的。

array_merge对数值键不会覆盖,但会对字符键进行覆盖,如果两个数组字符键相同,则先出现的覆盖后出现的。对数字键的值会从0开始重新排列

var_dump($arr3)

打印结果:

array(6) { ["a"]=> string(5) "swift" ["b"]=> string(4) "java" [0]=> string(6) "python" ["c"]=> string(4) "ruby" ["d"]=> string(3) "c++" [1]=> string(2) "go" }

可以看到同字符键a的值值保留了siwft,PHP被丢弃,a键保持不变,python和go原本的数字键都是2,现在重新排成了0和1

而用加号进行数组合并则无论是数字键还是字符键,只要相同首先出现的将被保留,后出现的将被丢弃,且数字键会被重新排序

var_dump($arr4)

打印结果:

array(5) { ["a"]=> string(3) "PHP" ["b"]=> string(4) "java" [0]=> string(6) "python" ["c"]=> string(4) "ruby" ["d"]=> string(3) "c++" }




你可能感兴趣的:(php array_merge和数组相加的区别)