php - 如何合并两个关联数组,同时保留它们的键?

标签 php arrays

假设我有两个数组:

$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;
    }
    

如何合并两个关联数组,同时保留它们的键?

最佳答案

你可以试试这个:

$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

因此,虽然一个包含 1 M 元素的数组使用大约 200 MB,总体峰值约为 400 MB,但 PHP 显然没有创建副本,否则峰值内存将约为 600 MB ($a$b$a + $b)。

关于php - 如何合并两个关联数组,同时保留它们的键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12848215/

相关文章:

PHP 表单更新页面

php - google-sheets api 未触发 google 表格中的 onEdit 功能

php - 映射//Entity 和//Entity 彼此不一致 - Symfony2/Doctrine2

php - 错误 - 网页在 PHP 中已过期?

c - 如何将指向 C(而非 C++)中的结构的指针数组设为空

c++ - 使 C++ 对象数组在 Python 中可迭代

arrays - Realm swift : manipulate arrays with realm object

php - 更新为 NULL Mysql

javascript - 如何使用javascript为下面的数组创建嵌套的对象数组

arrays - 从大小可变的数组构造一个结构