Php $\u会话变量未“取消设置”

Php $\u会话变量未“取消设置”,php,session,unset,Php,Session,Unset,发生了以下情况: session_start(); $_SESSION['myvar'] = 'something'; class SessionControl { public function unsetSessionVar($varName) { if (!isset($_SESSION)) { session_start(); } if (isset($_SESSION[$var

发生了以下情况:

session_start();

$_SESSION['myvar'] = 'something';

class SessionControl
{
    public function unsetSessionVar($varName)
    {
        if (!isset($_SESSION))
        {
            session_start();
        }

        if (isset($_SESSION[$varName]))
        {
            unset($_SESSION[$varName])
        }
        echo 'TEST 1: [' . $_SESSION[$varName] . ']';
     }
}
$SesContr = new SessionControl();
$SesContr->unsetSessionVar('myvar');
echo "TEST 2: [" . $_SESSION['myvar'] . ']';
产生:

TEST 1: []

TEST 2: [something]

这里发生了什么?

我想它应该会给你一个syntex错误。。你错过了;在unset语句后面应该是这样的

unset($_SESSION[$varName]);

如果可以解决您的问题,请运行它。

对我来说,它工作正常。您在哪个操作系统上使用哪个web服务器?重新启动可能会有所帮助?此代码在我的服务器上正常工作-变量未设置。考虑到您有一个语法错误,可能您发布的不是原始代码吗?首先要做的是。当你不确定的时候,你错过了一个分号,这对我来说也是正确的。当你不安的时候。Apache给出了一个错误,称未定义的索引为“myvar”,这意味着它没有设置。如果我没有取消设置,我会在两个测试中看到一些东西。另一件事是,我建议不要为结束会话而取消设置变量。使用session\u destroy。此外,您不需要在那里启动session\u两次-在文件顶部启动一次就足够了。是否需要在单行语句中设置半列??我认为除了循环和if语句之外,没有其他语句。。我们需要把它放进去。。这是必要的