gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 05:29:07 24 4
gpt4 key购买 nike

假设我有两个数组:

$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/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com