我想删除对象数组的重复对象。例如,我有一个像这样的数组:
array
0 =>
object(stdClass)
public 'object_id' => string '13' (length=2)
public 'object_data' => float 5
1 =>
object(stdClass)
public 'object_id' => string '13' (length=2)
public 'object_data' => float 5
public 'random_data' => float 15
2 =>
object(stdClass)
public 'object_id' => string '14' (length=2)
public 'object_data' => float 25
public 'random_data' => float 35
我正在使用这个功能
array array_unique ( array $array [, int $sort_flags = SORT_STRING ] )
删除重复的对象,但我上面的那些不相同,所以我想知道是否可以根据特定节点“ object_id ”删除那些重复的对象而不是比较完整的对象?
那可能吗?
同样在获得上述两个类似对象的情况下,我可以保留一个带有“ random_data ”的对象吗?
我应该使用循环并遍历所有对象,还是有办法用* array_unique *这样的函数来做?
谢谢
答案 0 :(得分:0)
您可以尝试:
$input = array( /* your array of objects */ );
$output = array();
foreach ( $input as $obj ) {
$id = $obj->object_id;
if ( !isset($output[$id]) ) {
$output[$id] = array();
}
$output[$id] = (object) array_merge((array) $output[$id], (array) $obj);
}