我對php比較陌生,很難搞清楚使用正確的數據結構。假設我有一個FooBar類,正確實施equals()
和hashCode()
。什麼樣的PHP收集(如果有的話)最類似於Java的hashSet?我需要一個沒有重複的對象集合。有人建議使用數組和函數array_key_exists
,但我只是想知道是否有另一種方法來做到這一點?Java的HashSet相當於PHP
5
A
回答
3
從5.2版PHP提供SplObjectStorage開始,它提供了Java的套裝功能:
- 關心的唯一性(同一個對象不能加兩次)
- 容易通過收集迭代
- 易查的對象的存在,在收集
檢查http://technosophos.com/content/set-objects-php-arrays-vs-splobjectstorage例如使用
的
2
標準PHP庫(SPL)提供的PHP編程語言中可用的數據結構很少。雖然與Java Collections Framework實現相比,它們什麼都不是,但有時它們可以通過提供比數組更高級的功能而變得非常有用。你可以找到可用的數據結構文件here。
PHP中最類似HashSet的數據結構是SplObjectStorage。
從文檔:
的SplObjectStorage類從對象到數據提供地圖或,通過忽略數據,對象集。這種雙重目的在很多情況下都很有用,涉及需要唯一標識對象的情況。
PHP中的對象不執行equals()
和hashCode()
方法。對象的唯一性由spl_object_hash()
函數返回的值決定。 SplObjectStorage
類使用相同的值來唯一標識其包含的對象。可以使用SplObjectStorage::getHash($object)
方法來檢索包含在SplObjectStorage
集合中的對象的標識符。
相關問題
- 1. 什麼是MATLAB相當於Java HashSet?
- 2. Java等於()相當於PHP
- 3. SQL Server中的Hashset相當於
- 4. PHP MD5相當於Java
- 5. 相當於Java到PHP死
- 6. 用於PHP的Java相當於preg_grep
- 7. 相當於Java PHP的call_user_func()的
- 8. 的Java相當於PHP的HMAC-SHA1
- 9. 的Java(Android版),相當於爲PHP $$ X
- 10. PHP是否有相當於Java的RequestDispatcher.forward?
- 11. 需要的Java相當於從PHP
- 12. php stristr函數在java中相當於?
- 13. Java Webservice客戶端UsernameToken相當於PHP
- 14. 在java中相當於php strtr
- 15. 什麼是Java相當於php json_encode
- 16. 和在PHP相當於在Java中
- 17. 在vbscript中是否有與Java的HashSet相當的功能?
- 18. callgrind相當於java?
- 19. Java相當於scala.collection.mutable.Map.getOrElseUpdate
- 20. Java相當於app.config?
- 21. Java相當於Buffer.BlockCopy
- 22. Pexpect相當於java?
- 23. Java相當於Curl
- 24. Java相當於pyftpdlib?
- 25. Java相當於warn_unused_result
- 26. Page.IsPostBack相當於PHP
- 27. 相當於在PHP
- 28. 相當於返回HashSet或索引的HashSet.Contains?
- 29. Java中的NSNotFound相當於
- 30. 相當於Java的C#Rfc2898DerivedBytes
數組將是要走的路。您可以使用PHP的array_unique函數來提取沒有重複的數組,或者在插入之前使用array_key_exists。 –