是否有可能获得PHP会话的“索引”

时间:2020-06-21 13:37:48

标签: php session-variables

我正在开发一个可以很好地使用SESSION的预订系统(针对我们自己的网站)。

有很多SESSION变量(带有子数组),我会定期跟踪它们。是否有一种简单的方法来获取“主要” SESSION变量的“索引”(或列表),例如$_SESSION['booking']$_SESSION['guest'],而无需转储每个变量的全部内容。例如我现在不希望看到$_SESSION['booking']['guestID']$_SESSION['booking']['arrivalDate']等。

我希望通过将$_SESSION当作数组来使用(更复杂)的方法,但是我希望有更简单的方法。

2 个答案:

答案 0 :(得分:1)

$_SESSION 一个数组。这是设计使然,甚至不是可选的。您可以get a list of keysloop 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文件并跟踪更改。