我是PHP的新手,我无法弄清楚这个基本问题。 PHP有某种set或list对象吗?类似于数组的东西,但能够动态添加或删除任意数量的对象。
答案 0 :(得分:7)
是的,您可以使用array对象和array functions。
基本上,您可以使用array_push函数或$arrayName[] = ...
表示法(其中arrayName是数组的名称)动态增长数组。
答案 1 :(得分:4)
由于您在问题标题中提到了“Set对象”(即如果您需要在集合中不重复这些对象),请查看SplObjectStorage(php 5.3+ )。
答案 2 :(得分:3)
只使用一个php数组,在PHP中没有“固定大小”数组这样的东西,所以你应该没问题。
答案 3 :(得分:3)
您可以使用Set中的Nspl。它支持基本的集合操作,它将其他集合,数组和可遍历对象作为参数:
$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]);
答案 4 :(得分:3)
如果您正在寻找没有重复元素的Set
数据结构,那么从PHP 7开始,SPL似乎增加了对Set数据结构的支持。
答案 5 :(得分:2)
PHP的数组就像一个由数字索引的有序数组的混搭,以及一个哈希查找表。您可以通过字符串索引查找任何元素,但元素也有定义的顺序。
答案 6 :(得分:1)
PHP7 +答案:使用官方的PHP-DS扩展。它比使用阵列的骇客解决方案要有效得多。集合有一些限制,但是对它们的大多数典型操作都快得多,并且提供了更好的界面。
https://www.php.net/manual/en/book.ds.php
<?php
use Ds\Set;
$numbers = new Set([1, 2, 3]);
$numbers->sum();
$numbers->diff(new Set([2, 3, 4]))
->union(new Set([3, 4, 5]))
->remove(...[3, 4])