2012-05-16 107 views
5

我對php比較陌生,很難搞清楚使用正確的數據結構。假設我有一個FooBar類,正確實施equals()hashCode()。什麼樣的PHP收集(如果有的話)最類似於Java的hashSet?我需要一個沒有重複的對象集合。有人建議使用數組和函數array_key_exists,但我只是想知道是否有另一種方法來做到這一點?Java的HashSet相當於PHP

+0

數組將是要走的路。您可以使用PHP的array_unique函數來提取沒有重複的數組,或者在插入之前使用array_key_exists。 –

回答

2

標準PHP庫(SPL)提供的PHP編程語言中可用的數據結構很少。雖然與Java Collections Framework實現相比,它們什麼都不是,但有時它們可​​以通過提供比數組更高級的功能而變得非常有用。你可以找到可用的數據結構文件here

PHP中最類似HashSet的數據結構是SplObjectStorage

從文檔:

的SplObjectStorage類從對象到數據提供地圖或,通過忽略數據,對象集。這種雙重目的在很多情況下都很有用,涉及需要唯一標識對象的情況。

PHP中的對象不執行equals()hashCode()方法。對象的唯一性由spl_object_hash()函數返回的值決定。 SplObjectStorage類使用相同的值來唯一標識其包含的對象。可以使用SplObjectStorage::getHash($object)方法來檢索包含在SplObjectStorage集合中的對象的標識符。