我是否理解了会话/多维数组?

时间:2011-10-07 08:08:38

标签: php

我是否正确地执行了以下操作?

我有一个数组,我想保存到一个会话中,所以我可以稍后在我的网络应用程序中使用它:

$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'];

还是我还做别的什么?

4 个答案:

答案 0 :(得分:4)

这两种方法都是完全有效的方法。然而,在那里放置一些防御性编码可能是值得的。 例如

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

答案 1 :(得分: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'];

答案 2 :(得分:1)

在设置/使用变量之前,请不要忘记使用session_start();。 然后像你一样设置变量。不是100%肯定,但两种方式都应该有效。 当你完成会话时,不要忘记销毁它session_destroy();

答案 3 :(得分:0)

做任何你需要的东西来解决你的问题。在您的情况下,两种方式都可以使用会话。如果我是你,我会选择第一个例子,只需要访问会话中的1或2个元素,然后secon示例访问2个以上(为了减少输入)。