我对php比较陌生,并且很难搞清楚要使用的正确数据结构。假设我有一个FooBar类equals()
和hashCode()
已正确实现。什么样的PHP集合(如果有的话)最像Java的hashSet?我需要一组没有重复的对象。有人建议使用数组和函数array_key_exists
,但我只是想知道是否有另一种方法可以做到这一点?
答案 0 :(得分:3)
从5.2版开始,Php提供了SplObjectStorage,它提供了Java Set的功能:
检查http://technosophos.com/content/set-objects-php-arrays-vs-splobjectstorage使用示例
答案 1 :(得分:3)
标准PHP库(SPL)提供的PHP编程语言中几乎没有可用的数据结构。虽然与Java Collections Framework实现相比它们并不算什么,但有时它们通过提供比数组更高级的功能非常有用。您可以找到可用数据结构here的文档。
PHP中最类似HashSet的数据结构是SplObjectStorage。
来自文档:
SplObjectStorage类提供从对象到数据的映射,或者通过忽略数据来提供对象集。在涉及唯一标识对象的需要的许多情况下,这种双重目的可能很有用。
PHP中的对象不实现equals()
和hashCode()
方法。对象的唯一性由spl_object_hash()
函数返回的值确定。 SplObjectStorage
类使用相同的值来唯一标识它包含的对象。 SplObjectStorage::getHash($object)
方法可用于检索SplObjectStorage
集合中包含的对象的标识符。