如何在 php 中合并对象数组和普通数组?

How to merge object array with normal array in php?

我有如下两个数组:

数组 1:

array([0]=> 11, [1] => 2.5)

数组 2:

Array ( 
    [0] => stdClass Object ( 
        [type] => 1 
        [creator_id] => 3 
        [creator_name] => E1 
        [per_tar] => 300 
        [pro_tar] => 200 
        [ac] => 300 
        [PA] => 17 
        [Q1] => 800 
    ) 
    [1] => stdClass Object ( 
        [type] => 1 
        [creator_id] => 4 
        [creator_name] => E2 
        [per_tar] => 100 
        [pro_tar] => 170 
        [ac] => 0 
        [PA] => 7 
        [Q1] => 270 
    ) 
) 

我想要的是通过以下方式将数组 1 与数组 2 合并

数组 1 键 [0] 被合并到数组 2 键 [0] 对象中,所有键都相同。

所以我的预期输出是:

Array ( 
    [0] => stdClass Object ( 
        [type] => 1 
        [creator_id] => 3 
        [creator_name] => E1 
        [per_tar] => 300 
        [pro_tar] => 200 
        [ac] => 300 
        [PA] => 17 
        [Q1] => 800
        [new] => 11 
    ) 
    [1] => stdClass Object ( 
        [type] => 1 
        [creator_id] => 4 
        [creator_name] => E2 
        [per_tar] => 100 
        [pro_tar] => 170 
        [ac] => 0 
        [PA] => 7 
        [Q1] => 270
        [new] => 2.5 
    ) 
) 

我正在尝试 array_merge() 函数,但它只合并了两个数组。请帮助我

最好的办法是将 stdClass 对象转换为数组,然后使用 array_merge.

将 stdClass 对象转换为数组,如下所示:

$array = json_decode(json_encode($object), true);
$res = [];
foreach($array1 as $key => $val){
    // before merging convert object to array
    $arr = is_object($array2[$key]) ? (array)$array2[$key] : $array2[$key];  
    $res[$key] = array_merge($array1[$key], $arr);
}

print_r($res);

您应该迭代 $array1 个项目并将每个项目的值插入到 $array2 的相关索引中。

foreach ($array1 as $key=>$value){
    $array2[$key]->new = $value;
}

结果见demo

此外,如果您想保留 array2,请将其值复制到新变量中,例如 $newArray

$newArray = $array2;
foreach ($array1 as $key=>$value){
    $newArray[$key]->new = $value;
}