Java';PHP中的HashSet等价物

Java';PHP中的HashSet等价物,java,php,set,hashset,Java,Php,Set,Hashset,我对php比较陌生,很难找到合适的数据结构来使用。假设我有一个FooBar类,它正确实现了equals()和hashCode()。php中哪种集合(如果有的话)最像Java的hashSet?我需要一个没有重复的对象集合。有人建议使用数组和函数array\u key\u存在,但我只是想知道是否有其他方法可以做到这一点?从5.2版开始,Php提供了SplObjectStorage,它提供了Java集合的功能: 关心唯一性(同一对象不能添加两次) 易于遍历集合 易于检查集合中是否存在对象 查看使用

我对php比较陌生,很难找到合适的数据结构来使用。假设我有一个FooBar类,它正确实现了
equals()
hashCode()
。php中哪种集合(如果有的话)最像Java的hashSet?我需要一个没有重复的对象集合。有人建议使用数组和函数
array\u key\u存在
,但我只是想知道是否有其他方法可以做到这一点?

从5.2版开始,Php提供了SplObjectStorage,它提供了Java集合的功能:

  • 关心唯一性(同一对象不能添加两次)
  • 易于遍历集合
  • 易于检查集合中是否存在对象

查看使用示例

标准PHP库(SPL)提供的PHP编程语言中几乎没有可用的数据结构。尽管与Java集合框架实现相比,它们算不上什么,但有时它们可以提供比数组更高级的功能,因此非常有用。您可以找到可用数据结构的文档

PHP中最类似哈希集的数据结构是

从文件中:

SplObjectStorage类提供从对象到数据的映射,或者通过忽略数据,提供对象集的映射。这种双重用途在许多需要唯一标识对象的情况下都很有用


PHP中的对象不实现
equals()
hashCode()
方法。对象的唯一性由
spl\u object\u hash()函数返回的值决定。
SplObjectStorage
类使用相同的值来唯一标识它包含的对象。
SplObjectStorage::getHash($object)
方法可用于检索
SplObjectStorage
集合中包含的对象的标识符。

数组是一种方法。您可以使用PHP的array_unique函数提取没有重复项的数组,或者在插入之前使用array_key_exists。