2014-01-29 33 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); 
}