在PHP中合并2个对象数组 [英] Merge 2 arrays of objects in PHP

查看:54
本文介绍了在PHP中合并2个对象数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何合并array1和2?

How do you merge array1 and 2?

array1

Array
(
    [0] => stdClass Object
    (
        [name] => bob
        [id] => 84569354306
        [contacts] => Array
        (
            [0] => none
        )
    )
    [1] => stdClass Object
    (
        [name] => jill
        [id] => 456745742
        [contacts] => Array
        (
            [0] => none
        )
    )
)

array2

Array
(
    [0] => stdClass Object
    (
        [name] => bob
        [id] => 84569354306
        [pid] => 1
        [lang] => eng;
        [location] =>
    )
    [1] => stdClass Object
    (
        [name] => jill
        [id] => 456745742
        [pid] => 2
        [lang] => eng;
        [location] =>
    )
)

结果数组:

Array
(
    [0] => stdClass Object
    (
        [name] => bob
        [id] => 84569354306
        [pid] => 1
        [lang] => eng;
        [location] =>
        [contacts] => Array
        (
            [0] => none
        )
    )
    [1] => stdClass Object
    (
        [name] => jill
        [id] => 456745742
        [pid] => 2
        [lang] => eng;
        [location] =>
        [contacts] => Array
        (
            [0] => none
        )
    )
)

我已经尝试过 array_merge()似乎是在数组中彼此相邻添加对象,而不是合并对象。

I've tried an array_merge() which seems to add objects next to each other in the array rather than merging the objects.

我很确定这个问题与我所需要的相似,但是我在简单问题上遇到了困难foreach循环。

I'm pretty sure this question is similar to what I need, but I'm having difficulty with the simple foreach loop.

推荐答案

另一种实现方式:

function merge_values(){
    $list = func_get_args();
    while( count( $list ) > 1 ){
        $array1 = array_shift( $list );
        $array2 = array_shift( $list );

        $merged_array = $array1;
        foreach( $array2 as $key => $value ){
            $merged_array[$key] = array_merge( (array)$value, (array)$merged_array[$key] );
            if( is_object( $value ) || is_object( $array1[$key] ) ){
                $merged_array[$key] = (object)$merged_array[$key];
            }
        }

        array_unshift( $list, $merged_array );
    } 
    return current( $list );
}

$merged = merge_values( $array1, $array2 );

这篇关于在PHP中合并2个对象数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆