PHP 数组合并方法之: + 和 array_merge的区别

两个数组没有指定索引的情况

$a = [1,2,3,];
$b = [1,2,3,'4','5','6'];

var_dump($a+$b);
//前面的数组中相同键值的元素会覆盖后面数组中的元素
array(5) {
  [0]=> int(1)
  [1]=> int(2)
  [2]=> int(3)
  [3]=> string(1) "4"
  [4]=> string(1) "5"
}

//当两个数组都没有给定索引的花,array_merge不会比较
var_dump(array_merge($a,$b));
array(8) {
  [0]=> int(1)
  [1]=> int(2)
  [2]=> int(3)
  [3]=> int(1)
  [4]=> int(2)
  [5]=> int(3)
  [6]=> string(1) "4"
  [7]=> string(1) "5"
}

当两个数组都有指定索引的时候

$a = ['a' => 1, 'b' => 2, 'c' => 3];
$b = ['a' => 11, 'b' => 22, 'c' => 33, 'd' => '44', 'e' => '55'];

//相同索引,前面的数组会覆盖后面数组对应的值
var_dump($a+$b);
array(5) {
  ["a"]=>int(1)
  ["b"]=>int(2)
  ["c"]=>int(3)
  ["d"]=>string(2) "44"
  ["e"]=>string(2) "55"
}

//相同索引,后面数组对应的值会覆盖前面数组
var_dump(array_merge($a,$b));
array(5) {
  ["a"]=>int(11)
  ["b"]=>int(22)
  ["c"]=>int(33)
  ["d"]=> string(2) "44"
  ["e"]=> string(2) "55"
}

你可能感兴趣的:(php)