Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php会话变量在初始化后不更新二维数组_Php_Session - Fatal编程技术网

php会话变量在初始化后不更新二维数组

php会话变量在初始化后不更新二维数组,php,session,Php,Session,我几乎不好意思问,因为它看起来很简单,但我无法让它更新 当用户登录时,我将会话变量设置为 array('users'=>array('timezone'=>'America/losangeles')) 然后,我可以按如下方式检索数据:$\u SESSION['users']['timezone'] 而且效果很好 但是,在用户配置文件页面中,用户可以更改其时区,当我尝试按如下方式更新$\u会话时,它不起作用: $\u会话['users']['timezone']='America/Denver'

我几乎不好意思问,因为它看起来很简单,但我无法让它更新

当用户登录时,我将会话变量设置为
array('users'=>array('timezone'=>'America/losangeles'))

然后,我可以按如下方式检索数据:
$\u SESSION['users']['timezone']

而且效果很好

但是,在用户配置文件页面中,用户可以更改其时区,当我尝试按如下方式更新$\u会话时,它不起作用:

$\u会话['users']['timezone']='America/Denver'

我做错了什么

---按要求提供更多代码-------

我发现会话变量是由类中的函数设置的

下面是函数:

function session_var_register($object_name, $var_value)
    {
        $_SESSION[$object_name]=$var_value;
    }
函数是如何被调用的:

$gf->session_var_register("users", $user_array)
用户数组看起来像
Array('Users'=>Array('timezone'=>'America/losangeles')

我不明白为什么这样不行。我绕过了函数调用,创建了如下数组,从而绕过了这个问题:

$_SESSION['users'] = $user_array;

但是出于知识方面的原因,如果有其他人也来到这篇文章中,有人能解释一下这个函数的不同之处吗?没有抛出错误,只是在通过函数注册会话变量后,不允许我将任何内容分配给它…几乎就像它在实例化后变成只读一样。

确保您已启动会话()在每个访问$\u会话变量的页面上。

听起来更新它的代码可能没有执行。您可以尝试在此分配之前放置某种调试语句,如echo,以验证是否正在执行操作。

根据Scott的回复,再次检查会话是否已启动是一个良好的“开始”


有一个很好的技巧,您可能会发现它在调试中很有用。

重新初始化会话id。这样,您就可以确定它有一个新的spanking id来存储变量。

在这段代码之后是否立即执行重定向


在执行重定向之前,请执行会话写入关闭(),以便在重定向之前再次存储会话变量。

谢谢克里斯。我在提交后发现了这个错误,并进行了编辑以修正答案。我永远都不能直截了当地说出PHP函数名:)谢谢。检查它并启动会话…var_dump($_session)显示了所有内容…但仍然无法分配给它?您可能需要显示更多代码。根据您目前所描述的内容,它没有理由不工作。它这样做了,并且正在执行该语句,但只是没有分配给会话。