我想要通过对象的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 );
但它没有用(它只返回一个带有重复对象的合并数组)
答案 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()