我是否正确地执行了以下操作?
我有一个数组,我想保存到一个会话中,所以我可以稍后在我的网络应用程序中使用它:
$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'];
还是我还做别的什么?
答案 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个以上(为了减少输入)。