PHP合并数组 + 和 array_merge() 的区别

同为数组合并,+array_merge() 但是还是有差别的:

键名为数字时,array_merge() 不会覆盖掉原来的值,但 合并数组则会把最先出现的值作为最终结果返回,而把后面的数组拥有相同键名的那些值抛弃掉(不是覆盖)

$a = array('a','b'); 
$b = array('c', 'd'); 
$c = $a + $b; 
var_dump($c);
// 输出:
// array (size=2)
//    0 => string 'a' (length=1)
//    1 => string 'b' (length=1) 

var_dump(array_merge($a, $b));
// 输出:
// array (size=4)
//    0 => string 'a' (length=1)
//    1 => string 'b' (length=1)
//    2 => string 'c' (length=1)
//    3 => string 'd' (length=1) 

键名为字符时, 仍然把最先出现的键名的值作为最终结果返回,而把后面的数组拥有相同键名的那些值抛弃掉,但 array_merge() 此时会覆盖掉前面相同键名的值

$a = array('a' => 'a' ,'b' => 'b');
$b = array('a' => 'A', 'b' => 'B');
$c = $a + $b;
var_dump($c);
//输出:
// array (size=2)
//    'a' => string 'a' (length=1)
//    'b' => string 'b' (length=1)

var_dump(array_merge($a, $b));
// 输出:
// array (size=2)
//    'a' => string 'A' (length=1)
//    'b' => string 'B' (length=1)

你可能感兴趣的:(PHP合并数组 + 和 array_merge() 的区别)