我对 php 比较陌生,很难找出要使用的正确数据结构。假设我有一个类 FooBarequals()
并hashCode()
正确实现。php 中什么样的集合(如果有的话)最类似于 Java 的 hashSet?我需要一个没有重复的对象集合。有人建议使用数组和函数array_key_exists
,但我只是想知道是否还有另一种方法可以做到这一点?
问问题
4309 次
2 回答
3
标准 PHP 库 (SPL) 提供的 PHP 编程语言中可用的数据结构很少。尽管与 Java Collections Framework 实现相比它们算不上什么,但有时它们通过提供比数组更高级的功能非常有用。您可以在此处找到可用数据结构的文档。
PHP 中最类似于 HashSet 的数据结构是SplObjectStorage。
从文档中:
SplObjectStorage 类提供从对象到数据的映射,或者通过忽略数据,提供对象集。这种双重目的在许多需要唯一标识对象的情况下很有用。
PHP 中的对象不实现equals()
和hashCode()
方法。对象的唯一性由spl_object_hash()
函数返回的值决定。类使用相同的值SplObjectStorage
来唯一标识它包含的对象。该SplObjectStorage::getHash($object)
方法可用于检索SplObjectStorage
集合中包含的对象的标识符。
于 2012-05-16T07:32:21.993 回答
3
从 5.2 版开始,Php 提供了 SplObjectStorage,它提供了 Java 的 Set 功能:
- 关心唯一性(同一个对象不能重复添加)
- 易于遍历集合
- 易于检查集合中是否存在对象
检查http://technosophos.com/content/set-objects-php-arrays-vs-splobjectstorage的使用示例
于 2012-05-16T07:21:08.717 回答