2013-05-27 48 views
3

刪除dups或創建沒有dups的新數組的最有效方法是什麼?有沒有內置的PHP函數可以保存這個手動刪除?PHP - 刪除對象數組中的重複項

[2013-05-27 22:35:55]: Array 
(
    [0] => stdClass Object 
     (
      [type] => 1 
      [val] => 1111 
     ) 

    [1] => stdClass Object 
     (
      [type] => 1 
      [val] => 2222 
     ) 

    [2] => stdClass Object 
     (
      [type] => 1 
      [val] => 1111 
     ) 

    [3] => stdClass Object 
     (
      [type] => 1 
      [val] => 2222 
     ) 
) 

非常感謝,盧克

+1

看看這裏http://stackoverflow.com/questions/4507518/will-array-unique-work-also-with-array-of-objects – user4035

+0

$ final = array(); foreach($合併爲$ current){ if(!in_array($ current,$ final)){ $ final [] = $ current; } } var_dump($ final); –

+3

[**'array_unique' **](http://php.net/manual/en/function.array-unique.php)與使用**'SORT_REGULAR' **的對象數組一起工作。看到我的答案:http://stackoverflow.com/questions/4507518/will-array-unique-work-also-with-array-of-objects/18203564#18203564 –

回答

2

我懷疑,有什麼事情比在這種情況下foreach()循環更快。

0

那麼首先,你必須對你的意思與重複,例如在陣列中決定上面,在02的項目可能是指同一個實例,或它可能是兩個完全不同的例子。

看看here瞭解更多關於比較PHP中的對象。

總之,如果複製你的意思是同一對象的引用,那麼你很幸運,因爲這是使用array_unique非常簡單:

array_unique($array); 

將做的工作。

另一方面,如果你想刪除具有相同值的對象,我猜測它是不太可能的,那麼你可以去array_filter,它需要一個回調函數來刪除數組中的項目。我把回調的編程留給你。 ;)