父数组键优先

时间:2014-03-09 00:15:51

标签: php arrays

我的会话数组如下所示:

$_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;

2 个答案:

答案 0 :(得分:0)

因为$_SESSION在编写$_SESSION = array (...时已经是一个数组。你创建了数组数组。

答案 1 :(得分:0)

这似乎是一个错误。在弄乱了关键名称之后,我发现在更改键名并撤消我的更改以使键名再次相同之后,它仍然有效,但在再次执行之后,它没有。