两个数据合并可以用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++" }