我正在开发一个可以很好地使用SESSION的预订系统(针对我们自己的网站)。
有很多SESSION变量(带有子数组),我会定期跟踪它们。是否有一种简单的方法来获取“主要” SESSION变量的“索引”(或列表),例如$_SESSION['booking']
和$_SESSION['guest']
,而无需转储每个变量的全部内容。例如我现在不希望看到$_SESSION['booking']['guestID']
,$_SESSION['booking']['arrivalDate']
等。
我希望通过将$_SESSION
当作数组来使用(更复杂)的方法,但是我希望有更简单的方法。
答案 0 :(得分:1)
$_SESSION
是一个数组。这是设计使然,甚至不是可选的。您可以get a list of keys或loop it以及其他任何数组。
答案 1 :(得分:0)
PHP函数array_keys给了我想要的东西,并且比我所担心的要简单得多。
$keys = array_keys($_SESSION);
echo 'SESSION keys: '; print_r($keys); echo '<br />';
这给了我我想要的,打印出来:
SESSION keys: Array ( [0] => pan_image_array [1] => rates [2] => sitevars [3] => availy [4] => query )
因此,接下来我尝试了一个foreach循环来依次取消设置每个循环:
foreach ($keys as $key_value) {
echo 'Key Value is: ' . $key_value . '<br />';
unset ($_SESSION[$key_value]);
}
// Then print SESSION contents again:
$keys = array_keys($_SESSION);
echo 'SESSION keys: '; print_r($keys); echo '<br />';
期望是这样会在结束时向我显示一个空的SESSION,并进行打印:
SESSION keys: Array ( )
这似乎表明SESSION数组现在为空。 但是,当我在编辑器中查看SESSION时,第一个变量(索引为0)仍然存在,如第二(及后续)运行所证实的那样:
SESSION keys: Array ( [0] => pan_image_array )
Key Value is: pan_image_array
SESSION keys: Array ( )
因此,在每个循环结束时,我都有一个看似空的SESSION数组,但是在检查时,第一个索引仍然存在。为什么不能取消设置第一个变量,给我一个“空”会话?是我的代码,还是不允许空的会话?
出于测试目的,我试图实现一个空的SESSION,但每次尝试新的测试运行时都没有使用具有不同SID(实际上是新文件名)的新SESSION。这样一来,我就可以在编辑器中打开SESSION文件并跟踪更改。