如何在PHP中合并两个对象数组

M. *_*far 18 php arrays sorting

我有以下两个对象数组:

第一阵列: $array1

Array
(
    [0] => stdClass Object
        (
            [id] => 100
            [name] => Muhammad
        )

    [1] => stdClass Object
        (
            [id] => 102
            [name] => Ibrahim
        )

    [2] => stdClass Object
        (
            [id] => 101
            [name] => Sumayyah
        )
)
Run Code Online (Sandbox Code Playgroud)

第二阵列: $array2

Array
(
    [0] => stdClass Object
        (
            [id] => 100
            [name] => Muhammad
        )

    [1] => stdClass Object
        (
            [id] => 103
            [name] => Yusuf
        )
)
Run Code Online (Sandbox Code Playgroud)

我想合并这两个对象数组(删除所有重复项)并根据id.

期望的输出:

Array
(
    [0] => stdClass Object
        (
            [id] => 100
            [name] => Muhammad
        )

    [1] => stdClass Object
        (
            [id] => 101
            [name] => Sumayyah
        )

    [2] => stdClass Object
        (
            [id] => 102
            [name] => Ibrahim
        )

    [3] => stdClass Object
        (
            [id] => 103
            [name] => Yusuf
        )
)
Run Code Online (Sandbox Code Playgroud)

M. *_*far 28

这三个简单的步骤完成了工作:

//both arrays will be merged including duplicates
$result = array_merge( $array1, $array2 );
//duplicate objects will be removed
$result = array_map("unserialize", array_unique(array_map("serialize", $result)));
//array is sorted on the bases of id
sort( $result );
Run Code Online (Sandbox Code Playgroud)

注意: @Kamran的回答帮助我找到了这个简单的解决方案

  • 如果对象很大,整个对象的序列化效率非常低!可能有一种更好的方法,只使用 ids (2认同)