📌  相关文章
📜  PHP的array_merge 和 array + array 有什么区别?(1)

📅  最后修改于: 2023-12-03 15:03:45.644000             🧑  作者: Mango

PHP的array_merge 和 array + array 有什么区别?

在 PHP 中,有两种方法可以将两个或多个数组合并成一个数组:array_mergearray + array。我们来看看它们之间的区别。

array_merge 函数

array_merge 函数将两个或多个数组合并成一个数组,并将新数组作为结果返回。如果两个或多个数组中具有相同的键名,则后面的值将覆盖之前的值。

下面是一个用示例:

$arr1 = array('foo' => 'bar', 'hi' => 'bye');
$arr2 = array('hello' => 'world', 'foo' => 'baz');

$result = array_merge($arr1, $arr2);

print_r($result);

输出:

Array
(
    [foo] => baz
    [hi] => bye
    [hello] => world
)

可以看到,$arr1 中的键 'foo' 的值被 $arr2 中的 'foo' 的值覆盖了。

+ 运算符

+ 运算符也可以将两个或多个数组合并成一个数组。但是,它的行为略有不同。它只合并第一个数组中不存在的键名。如果第一个数组中存在键名相同的条目,则第二个数组中的相应条目将被忽略。

下面是一个用示例:

$arr1 = array('foo' => 'bar', 'hi' => 'bye');
$arr2 = array('hello' => 'world', 'foo' => 'baz');

$result = $arr1 + $arr2;

print_r($result);

输出:

Array
(
    [foo] => bar
    [hi] => bye
    [hello] => world
)

可以看到,虽然 $arr2 中具有与 $arr1 中相同的键名 'foo',但 $result 中的 'foo' 的值仍为 'bar'

区别总结
  • array_merge 函数将两个或多个数组合并成一个数组,并将新数组作为结果返回。如果两个或多个数组中具有相同的键名,则后面的值将覆盖之前的值。
  • + 运算符将两个或多个数组合并成一个数组。但是,它的行为略有不同。它只合并第一个数组中不存在的键名。如果第一个数组中存在键名相同的条目,则第二个数组中的相应条目将被忽略。

如果您需要合并两个数组,并在遇到相同键名的情况下覆盖它们的值,则应该使用 array_merge 函数。如果您只需要将两个或多个数组组合在一起,并保留第一个数组中现有的键名,则应使用 + 运算符。