首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >php会话变量在初始化后不更新二维数组

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

Stack Overflow用户
提问于 2010-07-15 04:10:37
回答 5查看 603关注 0票数 0

我几乎很尴尬地问,因为它看起来很简单,但我不能让它更新。

当用户登录时,我像array('users'=>array('timezone'=>'America/los Angeles'));一样设置会话变量

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

它工作得很好。

但是,在用户配置文件页面中,用户可以更改他们的时区,当我尝试按如下方式更新$_SESSION时,它不起作用:

$_SESSION['users']['timezone'] = 'America/Denver';

我做错了什么?

-请求的更多代码

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

下面是函数:

代码语言:javascript
运行
复制
function session_var_register($object_name, $var_value)
    {
        $_SESSION[$object_name]=$var_value;
    }

下面是该函数的调用方式:

代码语言:javascript
运行
复制
$gf->session_var_register("users", $user_array)

用户数组看起来像array('users'=>array('timezone'=>'America/los Angeles'));

我不明白这为什么行不通。不过,我可以绕过函数调用,只需创建如下数组即可解决此问题:

代码语言:javascript
运行
复制
$_SESSION['users'] = $user_array;

但是出于知识的原因,如果有人来看这篇文章,有没有人能解释一下这个函数有什么不同?没有抛出错误,只是不允许我在通过function...almost注册会话变量后将任何内容赋给它,就像它在实例化后变成了read_only一样。

EN

回答 5

Stack Overflow用户

发布于 2010-07-15 04:15:02

确保在访问$_SESSION变量的每个页面上使用session_start()。

票数 2
EN

Stack Overflow用户

发布于 2010-07-15 04:16:45

听起来更新它的代码可能不会被执行。您可以尝试在此赋值之前放置某种类型的调试语句,如回显,以验证操作是否正在执行。

票数 0
EN

Stack Overflow用户

发布于 2010-07-15 04:17:57

根据Scott的回复,仔细检查会话是否启动是一个很好的“开始”。

这里有一个很好的提示here,你可能会发现它在调试中很有用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3250057

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档