首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在php中合并对象数组和普通数组?

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

Stack Overflow用户
提问于 2017-02-24 16:36:45
回答 3查看 3.8K关注 0票数 1

我有两个数组,如下所示:

数组1:

代码语言:javascript
复制
array([0]=> 11, [1] => 2.5)

数组2:

代码语言:javascript
复制
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的键被合并到数组2的键对象中,所有键都是相同的。

所以我的预期输出是:

代码语言:javascript
复制
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()函数,但它只合并了两个数组。请帮帮我

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-02-24 17:05:22

代码语言:javascript
复制
$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);
票数 2
EN

Stack Overflow用户

发布于 2017-02-24 17:06:24

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

代码语言:javascript
复制
foreach ($array1 as $key=>$value){
    $array2[$key]->new = $value;
}

请参阅demo中的结果

另外,如果你想保持array2,将它的值复制到$newArray这样的新变量中。

代码语言:javascript
复制
$newArray = $array2;
foreach ($array1 as $key=>$value){
    $newArray[$key]->new = $value;
}
票数 2
EN

Stack Overflow用户

发布于 2017-02-24 17:00:21

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

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

代码语言:javascript
复制
$array = json_decode(json_encode($object), true);
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42434083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档