有人可以澄清PHP中这个会话的内容吗?

时间:2012-06-08 17:56:06

标签: php arrays session

if($err)
$_SESSION['msg']['login-err'] = implode('<br />',$err);

三个简单的问题:

  1. 为什么在这里使用二维数组?为什么不说$_SESSION['login-err']
  2. 会话变量如何工作?我环顾四周,我似乎可以收集的是你可以分配存储在会话中的变量,但是有没有预定义的变量?
  3. 在PHP中你可以互换二维和一维数组吗?如果你想要一个不同的数组维度,我习惯于需要一个新的变量。

4 个答案:

答案 0 :(得分:2)

  1. 这是一个设计决定。您将不得不询问编写它的开发人员。
  2. $ _SESSION数组存储您抛出的所有内容。您可以像使用任何其他PHP数组一样使用它,它将被存储以用于后续页面加载。没有任何预定义的会话变量(如果您想自己检查,请尝试执行var_dump($_SESSION)。)
  3. 是的,你可以随意混合。 PHP中的“数组”实际上是散列映射,每个元素可以是任何其他PHP数据结构(包括其他数组/散列映射)。所以它不是真的一个多维数组,它是一个存储其他哈希图的哈希映射。

答案 1 :(得分:2)

  1. 好吧,假设你有一堆可能的消息,而不仅仅是一个消息 登录错误。然后,您需要一组消息进行迭代 通过。因此,msg数组。
  2. 会话变量对持久数据很有用。你用 您希望在每个文件的开头session_start(); 访问会话,您可以再次检索该数据。我不 知道任何预定义的变量,虽然我不明白你为什么这么做 真的需要它们。
  3. 你能再澄清一下这个问题吗?

答案 2 :(得分:2)

  1. 我们不知道,因为我们不了解原始程序的背景或设计。

  2. PHP会话是保留请求到请求数据的好方法。 $_SESSION变量保留给定用户的值,直到会话关闭或超时。在此处查看有关PHP会话的所有内容:http://php.net/manual/en/features.sessions.php

  3. PHP数组非常灵活,可以根据需要添加维度,因为添加新维度所做的就是将一个数组放在另一个数组中。见这里:http://www.php.net/manual/en/book.array.php

答案 3 :(得分:1)

$_SESSION是一个字典,而不是一个数组。虽然语法可能看起来很相似,但您可以在字典中插入所需的内容而无需重新声明它。 $_SESSION在其'msg'广告位中存储了另一个字典变量,因此当您访问$_SESSION['msg']时,它会返回另一个字典,然后您可以添加'login-err'个广告位,其中指向implode('<br />',$err);。我想编写代码的人想要将所有消息组织在一起作为$_SESSION字典中的一个插槽。

$_SESSION是一个字典,在同一会话的所有php文件中保持不变,允许您在php文件之间存储和发送信息。没有预定义的$_SESSION变量。