我有两个数组:
$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
)
我不想使用循环,有没有办法获得高性能?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
假设我们有 3 个数组,如下所示。
现在,如果您想合并所有这些数组,并希望最终的数组包含键 0 in 0 和 1 in 1 键下的所有数组数据,依此类推。
然后你需要使用array_replace_recursive PHP函数,如下。
结果如下。
Array ( [0] => Array ( [label] => Monday [is_open] => 1 [open_time] => 10:00 [close_time] => 18:00 ) [1] => Array ( [label] => Tuesday [is_open] => 0 [open_time] => 12:00 [close_time] => 22:00 ) )希望上述解决方案能够最适合您的要求!!
您正在寻找
array_replace():$array1 = array('a' => 1, 'b' => 2, 'c' => 3); $array2 = array('d' => 4, 'e' => 5, 'f' => 6, 'a' => 'new value', '123' => 456); print_r(array_replace($array1, $array2));自 PHP 5.3 起可用。
更新
您还可以使用联合数组运算符;它适用于旧版本,实际上也可能更快: