PHP有一个Set数据结构吗?

Jes*_*sky 10 php set

我是PHP的新手,我无法弄清楚这个基本问题.PHP有某种set或list对象吗?类似于数组的东西,但能够动态添加或删除任意数量的对象.

Mik*_*scu 7

是的,您可以使用数组对象和数组函数.

基本上,您可以使用array_push函数或$arrayName[] = ...表示法(其中arrayName是数组的名称)动态增长数组.

  • PHP数组既提供`List`又提供`HashMap`,但不提供`Set`.您可以通过将元素设置为数组键来通过`HashMap`接口模拟"Set". (3认同)
  • 这已经过时了,并且不会创建“Set”,而只是创建一个常规数组。问题的标题具有误导性。OP 并不是在寻找“Set”,而是在寻找向数组添加元素的方法。如果您正在寻找“Set”,请使用“Ds”库查看下面的 @okdewit 答案。它在后台使用命名键数组,并添加一些辅助方法(我想说,直接使用命名键数组没有性能改进)。 (2认同)

okd*_*wit 6

PHP7+ 答案:使用官方 PHP-DS 扩展。它比使用数组的 hacky 解决方案更有效。集合有一些限制,但对它们的大多数典型操作都快得多,并提供更好的界面。

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])
Run Code Online (Sandbox Code Playgroud)


Vol*_*erK 5

由于您在问题的标题中提到了“ 集合对象”(即,如果您需要集合中不重复的对象),请查看SplObjectStorage(php 5.3+)。