When using the array_merge function in php language, it is thought that the same key name will be overwritten, but please see the following code:
Copy code The code is as follows:
$a1 = array(1=>'abc', 3=>10);
$a2 = array(1=>'efg', 3=>20);
print_r(array_merge($a1, $a2));
What will be output? What we expected was:
Copy code The code is as follows:
Array
(
[1] => efg
[3] => 20
)
The actual output is:
Copy code The code is as follows:
Array
(
[0] => abc
[1] => 10
[2] => efg
[3] => 20
)
Not only was it not overwritten, but the numeric keys were re-indexed consecutively.
At first I thought this was a bug, then I read the php manual http://php.net/manual/zh/function.array-merge.php
「If the input array has the same string key name, the value after the key name will overwrite the previous value. However, if the array contains a numeric key name, the subsequent value will not overwrite the original value. Instead, append it to
.
If only an array is given and the array is numerically indexed, the key names are re-indexed consecutively. 》