如何在PHP中合并两个对象数组并去除重复项(使用对象ID)

27 浏览
0 Comments

如何在PHP中合并两个对象数组并去除重复项(使用对象ID)

这个问题已经有了答案:

PHP - 将两个数组合并成一个数组(还要删除重复项)

我有两个数组,我想通过对象的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 );

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

admin 更改状态以发布 2023年5月23日
0
0 Comments

这应该可以工作:

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

array_merge()可以获取一个数组中的所有内容,并使用array_unique()来删除重复项。

0
0 Comments

你应该像这样完成它:

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

0