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

三个快速问题:

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

4 回答 4

2
  1. 这是一个设计决定。您必须询问编写它的开发人员。
  2. $_SESSION 数组存储你扔给它的所有东西。您可以像使用任何其他 PHP 数组一样使用它,它将被存储以供后续页面加载。没有任何预定义的会话变量(var_dump($_SESSION)如果您想自己检查,请尝试执行)。
  3. 是的,您可以随意混合。PHP 中的“数组”实际上是哈希映射,每个元素都可以是任何其他 PHP 数据结构(包括其他数组/哈希映射)。所以它并不是一个真正的多维数组,它是一个存储其他哈希图的哈希图。
于 2012-06-08T18:01:24.723 回答
2
  1. 好吧,假设您有一堆可能的消息,而不仅仅是登录错误。然后你会想要一个消息数组来迭代。因此 msg 数组。
  2. 会话变量对于持久数据很有用。您 session_start();在要访问会话的每个文件的开头使用,并且可以再次检索该数据。我不知道任何预定义的变量,尽管我不明白你为什么真的需要它们。
  3. 你能再澄清一下这个问题吗?
于 2012-06-08T18:01:47.103 回答
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

于 2012-06-08T18:02:09.693 回答
1

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

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

于 2012-06-08T18:02:37.923 回答