2012-05-16 71 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集合中的对象的标识符。