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

三個簡單的問題:有人可以澄清這個會議在PHP中做的事情嗎?

  1. 爲什麼在這裏使用一個二維數組?爲什麼不直接說$_SESSION['login-err']
  2. 會話變量如何工作?我環顧四周,我似乎可以收集的是,您可以分配存儲在會話中的變量,但有沒有預定義的變量?
  3. 在PHP中,你可以交換使用二維和一維數組嗎?如果你想要一個不同的數組維度,我習慣於需要一個新的變量。
+0

1.是一個偏好或語義結構的問題。 2.查看手冊http://php.net/sessions,以及3.是的,數組實際上是字典和結構上的自由形式,因爲它們不需要預先分配內存分配。 – mario

回答

2
  1. 這是一個設計決定。你必須問問編寫它的開發者。
  2. $ _SESSION數組存儲您扔向它的所有內容。您可以像使用其他任何PHP數組一樣使用它,並將其存儲用於下一頁加載。沒有任何預定義的會話變量(如果您想自己檢查,請嘗試執行var_dump($_SESSION))。
  3. 是的,你可以按你的意願混合。 PHP中的「數組」實際上是哈希映射,每個元素可以是任何其他PHP數據結構(包括其他數組/ hashmaps)。所以它不是真的一個多維數組,它是一個存儲其他hashmaps的散列圖。
2
  1. 那麼讓我們說你有一堆可能的消息,而不僅僅是一個 登錄錯誤。然後你會想要一組消息來遍歷 。因此,味精數組。
  2. 會話變量對持久性數據很有用。您可以在每個文件的開頭使用 session_start();來訪問會話,並且您可以再次檢索該數據。我不知道 是否有任何預先定義的變量,儘管我不明白爲什麼 真的需要它們。
  3. 你能澄清這個問題多一點嗎?
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

1

$_SESSION是一個字典,而不是一個數組。雖然語法可能看起來很相似,但您可以在字典中插入儘可能多的內容,而無需重新聲明它。 $_SESSION有另一個字典變量存儲在其'msg'插槽中,因此當您訪問$_SESSION['msg']時,它將返回另一個字典,然後您可以添加一個'login-err'插槽,其中指向implode('<br />',$err);。我猜想編寫代碼的人想要將所有的消息組織在$_SESSION字典中的一個插槽中。

$_SESSION是一個字典,在同一會話的所有php文件中保持不變,允許您在php文件之間存儲和發送信息。沒有預定義的$_SESSION變量。

相關問題