首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何删除foreach循环中的数组元素?

如何删除foreach循环中的数组元素?
EN

Stack Overflow用户
提问于 2009-12-23 05:22:45
回答 6查看 159.9K关注 0票数 141

我想使用foreach遍历一个数组,以检查是否存在一个值。如果该值确实存在,我想删除包含该值的元素。

我有以下代码:

代码语言:javascript
复制
foreach($display_related_tags as $tag_name) {
    if($tag_name == $found_tag['name']) {
        // Delete element
    }
}

一旦找到值,我不知道如何删除元素。如何删除?

我不得不使用foreach来解决这个问题。可能有foreach的替代品,欢迎你分享它们。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-12-23 05:25:09

如果您也获得了密钥,则可以像这样删除该项:

代码语言:javascript
复制
foreach ($display_related_tags as $key => $tag_name) {
    if($tag_name == $found_tag['name']) {
        unset($display_related_tags[$key]);
    }
}
票数 235
EN

Stack Overflow用户

发布于 2009-12-23 05:25:23

代码语言:javascript
复制
foreach($display_related_tags as $key => $tag_name)
{
    if($tag_name == $found_tag['name'])
        unset($display_related_tags[$key];
}
票数 12
EN

Stack Overflow用户

发布于 2009-12-23 06:17:11

与在数组上执行foreach()循环相比,使用array_search()查找适当的键会更快。在小数组上,我会使用foreach以获得更好的可靠性,但对于较大的数组,或者经常执行的代码,这应该是更优的:

代码语言:javascript
复制
$result=array_search($unwantedValue,$array,true);
if($result !== false) {
  unset($array[$result]);   
}

因为array_search()可以返回0作为$unwantedValue的索引,所以需要严格的比较操作符!==。

此外,上面的示例将只删除第一个值$unwantedValue,如果$unwantedValue可以在$array中多次出现,您应该使用array_keys()来查找所有这些值:

代码语言:javascript
复制
$result=array_keys($array,$unwantedValue,true)
foreach($result as $key) {
  unset($array[$key]);
}

有关更多信息,请查看http://php.net/manual/en/function.array-search.php

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1949259

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档