我的会话数组如下所示:
$_SESSION => array(
"acc"=>array(
"name"=>"Account name",
"id"=>1,
...
),
"name"=>"User name",
...
);
要澄清,请注意这只是为了显示格式。我实际上并没有将$_SESSION
设置为新数组。对于该代码,请参阅问题的结尾。
如果我抛弃$_SESSION,
我就会得到我期望的东西;但是,如果我尝试引用其中一个具有父会话数组中使用的密钥的"acc"
变量,它将为我提供存储在会话数组中的结果。
例如
$_SESSION["acc"]["name"]
返回“用户名”时,应返回“帐户名”。
为什么会这样?
如果我将acc变量键设置为其他内容,例如aname
,例如
$_SESSION["acc"]["aname"]
这样就会返回“帐户名称”。
session_start();
$acc = array(
"id"=>$accid,
"sub"=>$sub,
"name"=>$name,
"exp"=>$exp
);
$_SESSION["acc"] = $acc;
$_SESSION["admin"] = $admin;
$_SESSION["name"] = "$fname $lname";
$_SESSION["uid"] = $uid;
答案 0 :(得分:0)
因为$_SESSION
在编写$_SESSION = array (...
时已经是一个数组。你创建了数组数组。
答案 1 :(得分:0)
这似乎是一个错误。在弄乱了关键名称之后,我发现在更改键名并撤消我的更改以使键名再次相同之后,它仍然有效,但在再次执行之后,它没有。