有没有一种简单的方法可以使用PHP从数组中删除元素,从而foreach ($array)
不再包含该元素?
我以为将它设置为null
可以实现,但是显然不起作用。
有多种删除数组元素的方法,其中某些方法对某些特定任务比其他任务更有用。
如果只想删除一个数组元素,则可以使用unset()
或\array_splice()
。
另外,如果您具有值并且不知道要删除元素的键,则可以使用\array_search()
该键来获取键。
unset()
请注意,使用unset()
数组键时不会更改/重新索引。如果要重新索引键,则可以使用它,\array_values()
之后unset()
将所有键转换为从0开始的数字枚举键。
码
<?php
$array = [0 => "a", 1 => "b", 2 => "c"];
unset($array[1]);
//↑ Key which you want to delete
?>
输出量
[
[0] => a
[2] => c
]
\array_splice()
方法如果您使用\array_splice()
这些键,则会自动为索引重新编制索引,但是关联键不会更改,相反,关联键会将\array_values()
所有键转换为数字键。
还\array_splice()
需要偏移量,不是关键!作为第二个参数。
码
<?php
$array = [0 => "a", 1 => "b", 2 => "c"];
\array_splice($array, 1, 1);
//↑ Offset which you want to delete
?>
输出量
[
[0] => a
[1] => c
]
array_splice()
就像unset()
通过引用获取数组一样,这意味着您不想将这些函数的返回值分配回数组。
如果你想删除多个数组元素,不想打电话unset()
或\array_splice()
多次,你可以使用的功能\array_diff()
或\array_diff_key()
取决于如果你知道的值或要删除的元素的键。
\array_diff()
方法如果知道要删除的数组元素的值,则可以使用\array_diff()
。和以前一样,unset()
它不会更改/重新索引数组的键。
码
<?php
$array = [0 => "a", 1 => "b", 2 => "c"];
$array = \array_diff($array, ["a", "c"]);
//└────────┘→ Array values which you want to delete
?>
输出量
[
[1] => b
]
\array_diff_key()
](http://php.net/manual/en/function.array-diff-key.php) 方法
如果知道要删除的元素的键,则要使用\array_diff_key()
。在这里,您必须确保将键作为第二个参数中的键而不是值来传递。否则,您必须使用翻转数组\array_flip()
。而且这里的键不会更改/重新索引。
码
<?php
$array = [0 => "a", 1 => "b", 2 => "c"];
$array = \array_diff_key($array, [0 => "xy", "2" => "xy"]);
//↑ ↑ Array keys which you want to delete
?>
输出量
[
[1] => b
]
同样,如果您要使用unset()
或\array_splice()
删除具有相同值的多个元素,则可以使用\array_keys()
获取特定值的所有键,然后删除所有元素。
问题内容: 我有一个看起来像这样的PHP数组: 当我var_dump数组值我得到这个: 我想删除“ 已完成” 和“ 标记为垃圾邮件” 。我知道可以,但是问题是有时索引号可能会不同。 是否可以通过匹配值名称而不是键值来删除它们? 问题答案: 您的数组很奇怪: 为什么不只使用as索引,以及as …值? 如果这样声明数组,会不会容易得多: 那将允许您使用as 的值作为索引来访问数组。 而且您将能够使用函
问题内容: 当我知道元素名称时,如何从数组中删除元素?例如: 我有一个数组: 用户输入 已移除。 要充分说明: 我有一个数据库,该数据库存储用逗号分隔的项目列表。该代码根据用户选择所在的位置来提取列表。因此,如果他们选择草莓,则会在草莓所在的每个条目中进行代码提取,然后使用split()将其转换为数组。我想让他们从数组中删除用户选择的项目(例如此示例草莓)。 问题答案: 使用拿到钥匙,并删除它一旦
问题内容: 有什么快速(好看的)方法可以从Java中的数组中删除元素? 问题答案: 你可以使用的。
问题内容: 我有一个原始类型数组,我想从中删除指定索引处的元素。正确而有效的方法是什么? 我正在寻找以下面提到的方式删除元素 但是上述方法看起来只能与Object一起使用,而不能与原语一起使用。 还有其他选择吗?我不能使用任何第三方/附加库 问题答案: 您需要创建一个新数组并复制元素。例如这样的事情: 注意:以上尚未经过测试/调试。 您也可以使用for循环进行复制,但在这种情况下应更快。 该方法最
问题内容: 如何从JavaScript中的数组中删除空元素? 有没有简单的方法,还是我需要遍历它并手动将其删除? 问题答案: 编辑: 大约9年前,当时没有很多有用的内置方法时,就回答了这个问题。 现在,当然,我建议您使用该方法。 请记住,此方法将为您返回 一个新数组, 其中的元素可以通过您提供给它的回调函数的条件。 例如,如果要删除或值: 例如,这将取决于您认为什么是“空”,如果您正在处理字符串,
问题内容: 我有一个数组例如: 谁能告诉我如何从数组中删除一个元素。例如,我要删除项目“ b”,以使数组如下所示: 我找不到解决办法。到目前为止,我在这里发现的内容不适用于我:( 问题答案: 您不能从数组中删除元素。Java数组的大小是在分配数组时确定的,不能更改。您能做的最好的事情是: 在相关位置分配给数组;例如 这给您带来了处理值所在数组中的“孔”的问题。(在某些情况下,这不是问题……但是在大