Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP有一套数据结构吗?_Php_Set - Fatal编程技术网

PHP有一套数据结构吗?

PHP有一套数据结构吗?,php,set,Php,Set,我对PHP还不熟悉,我不知道这个基本问题。PHP是否有某种集合或列表对象?类似于数组,但能够动态添加或从中删除任意数量的对象。是的,您可以使用对象和 基本上,您可以使用函数或$arrayName[]=…表示法(其中arrayName是数组的名称)动态增长数组。PHP的数组类似于按数字索引的有序数组和哈希查找表的混搭。您可以通过字符串索引查找任何元素,但元素也有一个已定义的顺序。只需使用php数组,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
不是(分机的实际成员身份不清楚,我在中找不到)