2014-01-29 10 views
0

我想删除对象数组的重复对象。例如,我得到这样一个阵列:通过比较项目的节点而唯一排列的数组

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”而不是比较完整对象的重复项?

这是可行吗?

同样在获得2个类似上述物品的情况下,我可以保留上面带有“random_data”的那个吗?

我是否应该使用循环并遍历所有对象,或者有什么方法可以使用像* array_unique *这样的函数来完成它?

谢谢

回答

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