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

2022-08-30 06:47:58

我想循环使用数组来检查值是否存在。如果该值确实存在,我想删除包含它的元素。foreach

我有以下代码:

foreach($display_related_tags as $tag_name) {
    if($tag_name == $found_tag['name']) {
        // Delete element
    }
}

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

我必须使用这个问题。可能有 替代方法,欢迎您分享它们。foreachforeach


答案 1

如果您还获得了密钥,则可以按如下方式删除该项目:

foreach ($display_related_tags as $key => $tag_name) {
    if($tag_name == $found_tag['name']) {
        unset($display_related_tags[$key]);
    }
}

答案 2

更好的解决方案是使用array_filter函数:

$display_related_tags =
    array_filter($display_related_tags, function($e) use($found_tag){
        return $e != $found_tag['name'];
    });

正如php文档所写的:

由于 foreach 依赖于 PHP 5 中的内部数组指针,因此在循环中更改它可能会导致意外行为。

在 PHP 7 中,foreach 不使用内部数组指针。