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

如何在foreach循环中从数组中删除对象?
EN

Stack Overflow用户
提问于 2010-02-21 10:51:30
回答 6查看 161.3K关注 0票数 151

我遍历了一个对象数组,想要根据它的'id‘属性删除其中一个对象,但我的代码无法工作。

代码语言:javascript
复制
foreach($array as $element) {
    foreach($element as $key => $value) {
        if($key == 'id' && $value == 'searched_value'){
            //delete this particular object from the $array
            unset($element);//this doesn't work
            unset($array,$element);//neither does this
        } 
    }
}

有什么建议吗。谢谢。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-02-21 10:56:59

代码语言:javascript
复制
foreach($array as $elementKey => $element) {
    foreach($element as $valueKey => $value) {
        if($valueKey == 'id' && $value == 'searched_value'){
            //delete this particular object from the $array
            unset($array[$elementKey]);
        } 
    }
}
票数 255
EN

Stack Overflow用户

发布于 2015-06-09 20:17:56

您还可以在foreach值上使用引用:

代码语言:javascript
复制
foreach($array as $elementKey => &$element) {
    // $element is the same than &$array[$elementKey]
    if (isset($element['id']) and $element['id'] == 'searched_value') {
        unset($element);
    }
}
票数 3
EN

Stack Overflow用户

发布于 2010-02-21 10:58:43

看起来你的unset语法是无效的,缺乏重新索引可能会在未来带来麻烦。请参阅:the section on PHP arrays

正确的语法如上所示。还要记住array-values用于重新索引,这样您就永远不会索引之前删除的内容。

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

https://stackoverflow.com/questions/2304570

复制
相关文章

相似问题

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