PHP array_merge 键顺序

Tas*_*iwa 4 php arrays array-merge

数组数组中的键以什么顺序执行 array_merge 是否重要,即下面第二个数组中的键是否会覆盖第一个数组中的键:

array1 = array('username' => 'abc', 'level' => 'admin', 'status' => 'active');
array2 = array('level' => 'root', 'status' => 'active', 'username' => 'bcd');
Run Code Online (Sandbox Code Playgroud)

? 或者两个数组中键的顺序必须相同吗?

dre*_*010 5

手册规定的回答了这个问题:

将一个或多个数组的元素合并在一起,以便将 1 的值附加到前一个数组的末尾。它返回结果数组。

如果输入数组具有相同的字符串键,则该键的后一个值将覆盖前一个。但是,如果数组包含数字键,则后面的值不会覆盖原始值,而是会附加。

因此,是的,如果第二个数组包含一些相同的键,则第二个数组中的键将覆盖第一个数组中的键。

$array1 = array('username' => 'abc', 'level' => 'admin', 'status' => 'active');
$array2 = array('level' => 'root', 'status' => 'active', 'username' => 'bcd');

$new = array_merge($array1, $array2);

print_r($new);
Run Code Online (Sandbox Code Playgroud)

输出:

Array
(
    [username] => bcd
    [level] => root
    [status] => active
)
Run Code Online (Sandbox Code Playgroud)

所以你可以看到第二个数组中的键覆盖了第一个数组中的相同键;每个数组中键的顺序无关紧要。