【发布时间】:2013-07-01 23:46:53
【问题描述】:
我有两个数组:
$array1 = array('a' => 1, 'b' => 2, 'c' => 3);
$array2 = array('d' => 4, 'e' => 5, 'f' => 6, 'a' => 'new value', '123' => 456);
我想合并它们并保留键和顺序而不是重新索引!!
怎么会这样?
Array
(
[a] => new value
[b] => 2
[c] => 3
[d] => 4
[e] => 5
[f] => 6
[123] => 456
)
我尝试使用 array_merge() 但它不会保留密钥:
print_r(array_merge($array1, $array2));
Array
(
[a] => 'new value'
[b] => 2
[c] => 3
[d] => 4
[e] => 5
[f] => 6
[0] => 456
)
我尝试使用联合运算符,但它不会覆盖该元素:
print_r($array1 + $array2);
Array
(
[a] => 1 <-- not overwriting
[b] => 2
[c] => 3
[d] => 4
[e] => 5
[f] => 6
[123] => 456
)
我想换个地方,但顺序不对,不是我需要的:
print_r($array2 + $array1);
Array
(
[d] => 4
[e] => 5
[f] => 6
[a] => new value
[123] => 456
[b] => 2
[c] => 3
)
我不想使用循环,有没有办法获得高性能?
【问题讨论】:
-
您不只是翻转数组合并的顺序吗? array_merge($array2, $array1);
-
array_merge() 的问题在于它看到
"123"键,并将其解释为数字,然后重新索引。