PHP有一套数据结构吗?
我对PHP还不熟悉,我不知道这个基本问题。PHP是否有某种集合或列表对象?类似于数组,但能够动态添加或从中删除任意数量的对象。是的,您可以使用对象和PHP有一套数据结构吗?,php,set,Php,Set,我对PHP还不熟悉,我不知道这个基本问题。PHP是否有某种集合或列表对象?类似于数组,但能够动态添加或从中删除任意数量的对象。是的,您可以使用对象和 基本上,您可以使用函数或$arrayName[]=…表示法(其中arrayName是数组的名称)动态增长数组。PHP的数组类似于按数字索引的有序数组和哈希查找表的混搭。您可以通过字符串索引查找任何元素,但元素也有一个已定义的顺序。只需使用php数组,php中没有“固定大小”数组,因此您应该可以使用它们。既然您在问题标题中提到了“对象”(即,如果您需
基本上,您可以使用函数或
$arrayName[]=…
表示法(其中arrayName是数组的名称)动态增长数组。PHP的数组类似于按数字索引的有序数组和哈希查找表的混搭。您可以通过字符串索引查找任何元素,但元素也有一个已定义的顺序。只需使用php数组,php中没有“固定大小”数组,因此您应该可以使用它们。既然您在问题标题中提到了“对象”(即,如果您需要在集合中不重复对象),请查看(php 5.3+。您可以使用from。它支持将其他集合、数组和可遍历对象作为参数的基本集合操作:
$set = set(1, 2);
$set->add('hello');
$set[] = 'world';
$set->delete('hello');
$array = [1, 2, 3];
$intersection = $set->intersection($array);
$anotherSet = Set::fromArray([1, 2, 3]);
$difference = $set->difference($anotherSet);
$iterator = new \ArrayIterator([1, 2, 3]);
$union = $set->union($iterator);
$isSubset = $set->isSubset([1, 2, 'hello', 'world']);
$isSuperset = $set->isSuperset([1, 2]);
如果您正在寻找一个没有重复元素的
集
数据结构,那么从PHP7开始,SPL似乎增加了对数据结构的支持。PHP7+回答:使用官方的PHP-DS扩展。它比使用数组的黑客解决方案效率更高。集有一些限制,但在em速度更快,提供更好的接口
PHP数组既提供列表
又提供哈希映射
,但不提供集
。您可以通过哈希映射
接口将元素设置为数组键来模拟集
。但是,这样您就只能拥有标量类型的集。如果我是正确的,这是一个糟糕的解决方案。这已经过时,不适用创建一个集合
,只是一个常规数组。问题的标题有误导性。OP不是寻找一个集合
,而是寻找向数组中添加元素的方法。如果你正在寻找一个集合
,请使用Ds
库在下面查找@okdewit答案。它在后台使用一个命名的键控数组,并添加一些辅助方法(我要说的是,与直接使用命名密钥数组相比,性能没有任何提高)是的,有一个固定大小的数组。它叫SplFixedArray
。请看这里:小说明:它不是SPL
的一部分,它是DS
SPL
是PHP核心的一部分,它总是捆绑在一起,但不幸的是DS
不是(分机的实际成员身份不清楚,我在中找不到)