1

我有一个 foreach 循环,如果满足某些条件,我想从数组中取消设置一个项目,如下所示:

foreach ($array as $element) {
    if (conditions) {
        unset($element);
    }
}

但之后该元素并未取消设置。我究竟做错了什么?我是否取消了对实际元素的引用或类似的东西?

4

2 回答 2

8

简单的解决方案,通过它的索引取消设置元素:

foreach ($array as $key => $element) {
    if (conditions) {
        unset($array[$key]);
    }
}

只是取消$element设置是行不通的,因为这个变量不是对数组元素的引用,而是一个副本。因此改变 的值$element也不会改变数组。

于 2012-01-21T17:53:06.720 回答
0

另一种方法是,您可以通过执行以下操作将数组元素通过引用传递到循环中:

foreach($array as &$var) {
    unset($var);
}

这很有用,因为您可以直接访问数组元素以根据需要更改或删除,而无需构造新数组或按键访问。您对 $var 所做的任何更改都会影响 $array 的内容。

于 2013-11-05T21:46:14.550 回答