PHP从数组中删除特定项

9

我有一个数组,如下:[312, 401, 1599, 3]

使用array_diff( [312, 401, 1599, 3], [401] )可以删除一个值,例如我删除了值为401的元素。

但是如果我有这个数组:[312, 401, 401, 401, 1599, 3],如何只删除一个值为401的元素?

无论我删除第一个还是最后一个元素都没有关系,我只需要删除一个401值。如果我想删除所有的401值,我需要删除三次。

谢谢!


我的函数会删除所有401的值,因此输出为[312,1599,3]。 - Clément Andraud
但是哪一个必须被移除? - Murad Hasan
这似乎是一个奇怪的要求。您不仅想要“401”的一个出现,而且也不关心索引。只是出于好奇,这里的最终目标是什么? - jDo
@FrayneKonok 他显然不在意:“删除第一个或最后一个值并不重要。” - jDo
为什么不只使用一个简单的for each循环和一个break语句,当找到值的第一个实例时。试图想出一些过于复杂的解决方案似乎很愚蠢。 - Pavlin
显示剩余3条评论
3个回答

14

使用array_search函数,您可以获取给定值的第一个匹配键,然后可以使用unset函数将其删除。

if (false !== $key = array_search(401, $array)) {
  unset($array[$key]);
}

1
使用array_intersect,您可以一次检索所有匹配的键,这使您能够决定要使用unset删除其中哪个特定的键。

1
搜索特定关键字并删除它:
if (($key = array_search(401, $array)) !== false) {
   unset($array[$key]); 
}

PHP手册:

array_search

unset


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接