当前位置: 首页 > 面试题库 >

从PHP中的数组中删除元素

曾宏毅
2023-03-14
问题内容

有没有一种简单的方法可以使用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 的值作为索引来访问数组。 而且您将能够使用函

  • 问题内容: 有什么快速(好看的)方法可以从Java中的数组中删除元素? 问题答案: 你可以使用的。

  • 问题内容: 当我知道元素名称时,如何从数组中删除元素?例如: 我有一个数组: 用户输入 已移除。 要充分说明: 我有一个数据库,该数据库存储用逗号分隔的项目列表。该代码根据用户选择所在的位置来提取列表。因此,如果他们选择草莓,则会在草莓所在的每个条目中进行代码提取,然后使用split()将其转换为数组。我想让他们从数组中删除用户选择的项目(例如此示例草莓)。 问题答案: 使用拿到钥匙,并删除它一旦

  • 问题内容: 我有一个原始类型数组,我想从中删除指定索引处的元素。正确而有效的方法是什么? 我正在寻找以下面提到的方式删除元素 但是上述方法看起来只能与Object一起使用,而不能与原语一起使用。 还有其他选择吗?我不能使用任何第三方/附加库 问题答案: 您需要创建一个新数组并复制元素。例如这样的事情: 注意:以上尚未经过测试/调试。 您也可以使用for循环进行复制,但在这种情况下应更快。 该方法最

  • 问题内容: 如何从JavaScript中的数组中删除空元素? 有没有简单的方法,还是我需要遍历它并手动将其删除? 问题答案: 编辑: 大约9年前,当时没有很多有用的内置方法时,就回答了这个问题。 现在,当然,我建议您使用该方法。 请记住,此方法将为您返回 一个新数组, 其中的元素可以通过您提供给它的回调函数的条件。 例如,如果要删除或值: 例如,这将取决于您认为什么是“空”,如果您正在处理字符串,

  • 问题内容: 我有一个数组例如: 谁能告诉我如何从数组中删除一个元素。例如,我要删除项目“ b”,以使数组如下所示: 我找不到解决办法。到目前为止,我在这里发现的内容不适用于我:( 问题答案: 您不能从数组中删除元素。Java数组的大小是在分配数组时确定的,不能更改。您能做的最好的事情是: 在相关位置分配给数组;例如 这给您带来了处理值所在数组中的“孔”的问题。(在某些情况下,这不是问题……但是在大