我有一个PHP数组如下:
$messages = [312, 401, 1599, 3, ...];我想删除包含值$del_val (例如,$del_val=401)的元素,但是我不知道它的键。这可能会有所帮助:每个值只能存在一次。
我在找最简单的函数来完成这个任务。
发布于 2011-08-29 00:53:27
使用array_search()和unset,尝试以下操作:
if (($key = array_search($del_val, $messages)) !== false) {
unset($messages[$key]);
}array_search()返回它找到的元素的键,该键可用于使用unset()从原始数组中删除该元素。它将在失败时返回FALSE,但是它可以在成功时返回一个false-y值(例如,您的键可能是0 ),这就是为什么使用严格比较!==运算符的原因。
if()语句将检查array_search()是否返回一个值,并且只执行一个操作。
发布于 2012-05-04 19:41:19
从数组中删除元素基本上就是用一个元素设置差异。
array_diff( [312, 401, 15, 401, 3], [401] ) // removing 401 returns [312, 15, 3]它很好地概括了,如果您愿意的话,您可以同时删除任意多个元素。
免责声明:请注意,我的解决方案会生成数组的新副本,同时保持旧的数组保持原样,而接受的答案则会发生变异。选一个你需要的。
发布于 2012-08-16 07:36:12
一个有趣的方法是使用array_keys()
foreach (array_keys($messages, 401, true) as $key) {
unset($messages[$key]);
}array_keys()函数需要两个额外的参数来返回特定值的键,以及是否需要严格检查(即使用===进行比较)。
这还可以删除具有相同值的多个数组项(例如,[1, 2, 3, 3, 4])。
https://stackoverflow.com/questions/7225070
复制相似问题