说我有两个数组:
$arr = array('k1' => 'v1',
'k2' => 'v2');
$arr2 = array('k3' => 'v3',
'k4' => 'v4');
我想将$arr2
合并到$arr
,以便我最终得到:
$arr = array('k1' => 'v1',
'k2' => 'v2',
'k3' => 'v3',
'k4' => 'v4');
有一个基本要求:解决方案必须更改$arr
本身,就像引用数组(array_push()
,array_splice()
)的函数一样做。
$arr = array_merge($arr, $arr2)
,因为它会创建副本。 我不想迭代$ arr2:
// this is not an option
foreach ($arr2 as $k => $v)
{
$arr[$k] = $v;
}
如何在保留键的同时合并两个关联数组?
答案 0 :(得分:2)
你可以试试这个:
$arr += $arr2;
我测试了内存使用情况:
for ($i=0; $i<1000000; $i++) $a[]=1;
echo memory_get_peak_usage(), "\n";
for ($i=0; $i<1000000; $i++) $b[]=1;
echo memory_get_peak_usage(), "\n";
$a += $b;
echo memory_get_peak_usage(), "\n";
输出:
209135144
417540744
417540872
因此,当一个具有1M个元素的阵列使用大约200 MB,并且总峰值大约为400 MB时,PHP显然没有创建副本,否则峰值内存大约为600 MB($a
,{ {1}}和$b
)。