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

Three quick questions:

  1. Why use a two-dimensional array here? Why not just say $_SESSION['login-err']?
  2. How do session variables work? I've looked around and all I can seem to gather is that you can assign variables that are stored in the session, but are there any predefined variables?
  3. In PHP can you have two dimensional and one dimensional arrays interchangeably? I'm used to needing a new variable if you want a different dimension of array.
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']追加できます。コードを書いた人は誰でも、すべてのメッセージを辞書の1つのスロットとしてまとめたいと思っていたと思います。'login-err'implode('<br />',$err);$_SESSION

$_SESSIONは、同じセッションのすべてのphpファイルで一定の辞書であり、phpファイル間で情報を保存および送信できます。$_SESSION事前定義された変数はありません。

于 2012-06-08T18:02:37.923 に答える