PHP数组按值(而不是键)删除
PHP数组按值(而不是键)删除
我有一个PHP数组,如下所示:
$messages = [312, 401, 1599, 3, ...];
我想删除包含值$del_val
(例如$del_val=401
)的元素,但我不知道它的键。这可能有帮助:每个值只能出现一次。
我正在寻找执行此任务的最简单的函数,请。
admin 更改状态以发布 2023年5月21日
把数组中的一个元素删除基本上只是将它与一个元素进行差集。
array_diff( [312, 401, 15, 401, 3], [401] ) // removing 401 returns [312, 15, 3]
这种方法可以很好地推广,如果需要的话,可以同时删除多个元素。
免责声明:请注意,我的解决方案生成一个新副本的数组,而保持旧副本不变,与被接受的答案相反,它是突变的。选择你需要的那一个。
使用array_search()
和unset
,尝试以下操作:
if (($key = array_search($del_val, $messages)) !== false) { unset($messages[$key]); }
array_search()
会返回它找到的元素的键,可以使用unset()
从原始数组中删除该元素。但如果查找失败,它将返回FALSE
,但在成功时它可以返回一个值为0
的假值,这就是为什么要使用严格比较!==
操作符的原因。
if()
语句会检查array_search()
是否返回一个值,如果是,则执行相应的操作。