我有 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()