在foreach循环中取消设置数组元素

时间:2017-07-06 08:33:04

标签: php

我的数组有点问题。这是代码:

$attributes = array($_SESSION['item_01'] , $_SESSION['item_02'] , $this->item_03 , $this->item_04);
foreach($attributes as $attribute) {
    unset($attribute);
}

此代码位于类中,$this->item_03item_04是类变量。

所以,它不起作用,但当我通过self(unset($_SESSION['item_01)等)取消设置每个数组元素时,它可以工作。

1 个答案:

答案 0 :(得分:1)

您需要按键取消设置,而不是按值设置。

$attributes = array($_SESSION['item_01'] , $_SESSION['item_02'] , $this->item_03 , $this->item_04);
foreach($attributes as $key => $attribute) {
    unset($attributes[$key]);

}

如果您希望清除会话对象:

foreach($attributes as $key => $attribute) {
    if(array_key_exists($key, $_SESSION) {
        unset($_SESSION[$key]);
        $this->{$key} = null;// this or next line
        unset($this->{$key};
    }
}

在php中,它足以“清除”对项目的引用。

因此,如果您希望释放内存,只需将值设置为null。

$this->item_01 = null;
$this->item_02 = null;

然后如果没有其它引用,则将释放内存。

如果您希望获得更全面的答案,则需要显示更多代码。