如何在PHP中合并两个没有重复的对象数组(使用对象id)

时间:2016-02-03 14:00:50

标签: php arrays

我想要通过对象的id合并2个数组:

$object1->id = "1234"
$object2->id = "34553"
object3->id = "432"
array1 = [$object1,$object2]
array2 = [$object3,$object2]

我想要的结果:

array3 = [$object1,$object2,$object3]

我试图按照我发现的这些说明进行操作:

//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 );

但它没有用(它只返回一个带有重复对象的合并数组)

2 个答案:

答案 0 :(得分:6)

你应该能够这样做:

array_unique(array_merge($array1,$array2), SORT_REGULAR);

合并后的数组将是唯一的,并使用sort标志SORT_REGULAR自然排序。 SORT_REGULAR还将导致比较数组项而不更改类型。这(一旦你纠正了所有的语法错误)将返回:

Array
(
    [0] => stdClass Object
        (
            [id] => 1234
        )

    [1] => stdClass Object
        (
            [id] => 34553
        )

    [2] => stdClass Object
        (
            [id] => 432
        )

)

答案 1 :(得分:0)

这应该有效:


    $array3 = array_unique( array_merge( $array1, array2 ) ); 

array_merge()将所有内容都放在一个数组中 并删除重复使用array_unique()