2011-10-07 56 views
0

我正確地做下列事情嗎?我是否正確理解會話/多維數組?

我有一個數組,我想保存到一個會議,所以我可以在我的web應用程序在以後使用它:

$data = array(
     "id" => $_POST["id"], 
     "r1" => $_POST["r1"], 
     "r2" => $_POST["r2"], 
     "r3" => $_POST["r3"]); 

我將它保存到一個會話是這樣的:

$_SESSION['settings'] = $data; 

現在,我不知道如何在我的應用程序中稍後使用它。

辦以下

$id = $_SESSION['settings']['id']; 
$r1 = $_SESSION['settings']['r1']; 

還是我做了以下

$data = $_SESSION['settings']; 

$id = $data['id']; 
$r1 = $data['r1']; 

還是我做點別的?

+2

你有沒有試過這兩種選擇?它是否工作或您遇到了哪些問題? –

+0

你的問題實際上並不是關於會話,而是關於多維數組。 – markus

回答

3

你可以這樣做既作爲$_SESSION['settings']指向數組,兩人的表情將是相同的:

// The expression... 
$val = $_SESSION['settings']['id']; 
// ... is an internal shorthand for ... 
$tmp = $_SESSION['settings']; // $tmp never exist - just to aid explanation. 
$val = $tmp['id']; 
4

這兩種方法都是完全有效的方法。然而,在那裏放置一些防禦性編碼可能是值得的。 例如。

$id = ""; 
if (ISSET($SESSION["settings"]) && ISSET($SESSION["settings"]["id"]) 
{ 
    $id = $SESSION["settings"]["id"]; 
} 
0

做任何你需要解決你的問題。就你而言,這兩種方式都可以接受與會話一起工作。如果我是你,我會選擇第一個例子,只需要訪問會話中的1或2個元素,而secon例子可以訪問2個以上(爲了輸入更少)。

1

不要忘記設置/使用變量之前使用session_start();。 然後像你一樣設置變量。不是100%肯定的,但兩種方式都應該有效。 當你完成與會議的工作,不要忘記摧毀它session_destroy();