数组合并时,常用的是 array_merge 和 + 运算符。
下面来看看它们的用法和区别。
用法和区别
- 对于 array_merge,只有当存在相同的字符串键名时,前一个数组的值才会被后面的覆盖;否则,后面的值都是追加到后面。
- 对于 + 运算符,只要存在相同的键名,都是保留前一个数组的值。
相同的字符串键名
- 对于 array_merge,如果多个数组中有相同的字符串键名,则前一个数组的值将被后面的覆盖。
- 对于 + 运算符,则是保留前一个数组的值。
$a = ['s1' => 'one_a', 's2' => 'two_a'];
$b = ['s1' => 'one_b', 's4' => 'four_b'];
print_r(array_merge($a, $b));
print_r($a + $b);
// 输出如下
Array
(
[s1] => one_b
[s2] => two_a
[s4] => four_b
)
Array
(
[s1] => one_a
[s2] => two_a
[s4] => four_b
)
相同的数值键名
- 对于 array_merge,如果多个数组中有相同的数值键名,则后一个数组的值会追加到后面。
- 对于 + 运算符,则是保留前一个数组的值。
$a = [1 => 'one_a', 2 => 'two_a'];
$b = [1 => 'one_b', 4 => 'four_b'];
print_r(array_merge($a, $b));
print_r($a + $b);
// 输出如下
Array
(
[0] => one_a
[1] => two_a
[2] => one_b
[3] => four_b
)
Array
(
[1] => one_a
[2] => two_a
[4] => four_b
)
$a = ['one_a', 'two_a'];
$b = ['one_b', 'four_b'];
print_r(array_merge($a, $b));
print_r($a + $b);
// 输出如下
Array
(
[0] => one_a
[1] => two_a
[2] => one_b
[3] => four_b
)
Array
(
[0] => one_a
[1] => two_a
)