无法在Yii2中取消设置会话变量

时间:2015-07-30 16:16:02

标签: php session yii yii2 unset

我正在使用Yii2,我刚刚开始使用sessions。我在Yii网站上为他们阅读了documentation

有一件事我注意到,在没有使用标准超全局$_SESSION的会话中使用多维数组有点困难,因此我主要使用它。

我遇到的一件事就是取消会话变量。

示例:

if (!Yii::$app->session->isActive) {
    Yii::$app->session->open();
}

print_r($_SESSION['foo']);

if ($this->command == 'sample_action') {

    if (!isset($_SESSION['foo'][$this->some_id][$this->example_id])) {
        $_SESSION['foo'][$this->some_id][$this->example_id] = $this->example_id;
        $result = true;
    }

} elseif ($this->command == 'sample_action_2') {

    if (isset($_SESSION['foo'][$this->some_id][$this->example_id])) {
        unset($_SESSION['foo'][$this->some_id][$this->example_id]);
        //$_SESSION['foo'][$this->some_id][$this->example_id] = ''; // This works
        $result = true;
    }           

}

print_r($_SESSION['foo']);

在它上面使用unset根本不起作用,它仍然存在。但是,将其设置为空值可以正常工作。

2 个答案:

答案 0 :(得分:4)

试试这个..

$session = Yii::$app->session;
$session->remove('foo');

可以帮助你..

答案 1 :(得分:1)

最后得到了一个有效的解决方案,希望这有助于其他人:

$session = Yii::$app->session;

$foo = $session['foo'];

if ($this->command == 'sample_action') {
    $foo[$this->some_id][$this->example_id] = $this->example_id;
} elseif ($this->command == 'sample_action_2') {
    unset($foo[$this->some_id][$this->example_id]);
}

$session['foo'] = $foo;