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


How to merge two arrays of object without duplicates(using the object id) in PHP

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

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

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

你应该能够这样做:

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

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

Array
(
    [0] => stdClass Object
        (
            [id] => 1234
        )
    [1] => stdClass Object
        (
            [id] => 34553
        )
    [2] => stdClass Object
        (
            [id] => 432
        )
)

这应该有效:

   $array 3 = array_unique( array_merge( $array 1, 数组 2 ) );

array_merge()在一个数组中获取所有内容并删除重复项,请使用array_unique()