开发者社区> 问答> 正文

从PHP中的数组中删除元素

已解决

有没有一种简单的方法可以使用PHP从数组中删除元素,从而foreach ($array)不再包含该元素?

我以为将它设置为null可以实现,但是显然不起作用。

展开
收起
保持可爱mmm 2020-01-08 15:31:49 443 0
1 条回答
写回答
取消 提交回答
  • 采纳回答

    有多种删除数组元素的方法,其中某些方法对某些特定任务比其他任务更有用。 删除一个数组元素

    如果只想删除一个数组元素,则可以使用unset()或\array_splice()。

    另外,如果您具有值并且不知道要删除元素的键,则可以使用\array_search()该键来获取键。 unset()

    请注意,使用unset()数组键时不会更改/重新索引。如果要重新索引键,则可以使用它,\array_values()之后unset()将所有键转换为从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()需要偏移量,不是关键!作为第二个参数。

    "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()它不会更改/重新索引数组的键。

    "a", 1 => "b", 2 => "c"]; $array = \array_diff($array, ["a", "c"]); //└────────┘→ Array values which you want to delete ?>

    输出量

    [ [1] => b ]

    \array_diff_key() 方法

    如果知道要删除的元素的键,则要使用\array_diff_key()。在这里,您必须确保将键作为第二个参数中的键而不是值来传递。否则,您必须使用翻转数组\array_flip()。而且这里的键不会更改/重新索引。

    "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()获取特定值的所有键,然后删除所有元素。

    问题来源于stack overflow

    2020-01-08 15:32:10
    赞同 展开评论 打赏
问答分类:
PHP
问答地址:
问答排行榜
最热
最新

相关电子书

更多
PHP安全开发:从白帽角度做安全 立即下载
PHP 2017.北京 全球开发者大会——高可用的PHP 立即下载
复杂PHP系统性能瓶颈排查及优化 立即下载