【发布时间】:2020-03-31 19:20:04
【问题描述】:
今天我有点奇怪。
我发现显然我不能使用会话变量然后销毁它(不破坏整个会话。)
让我解释一下。如果我这样做,例如:
if (isset($_SESSION['var'])) {
$var = $_SESSION['var'];
unset($_SESSION['var']);
}
var_dump($_SESSION);
echo "var: $var";
结果是“var”为空,因为 $var 和 key 都是 $_SESSION。
但是,如果您注释掉未设置的部分,则 var 既在 $var 中,也在 $_SESSION 数组中。
即使是更高级的:
if (isset($_SESSION['var'])) {
$var = array_splice($_SESSION, array_search('var', array_keys($_SESSION)), 1);
}
似乎有完全相同的问题。
这太奇怪了。
当遇到这种令人讨厌的行为时,我还能做什么?
提前谢谢你。
编辑:我只是做了一件显而易见的明智之举:
$session_copy = $_SESSION;
if (isset($session_copy['var'])) {
$var = $session_copy['var'];
unset($_SESSION['var']);
}
是的,也不行。
【问题讨论】:
-
从 5.2.3 到 7.4.0 似乎无法 replicate the problem。
-
似乎取决于响应中指出的 php 设置
-
你
session_start()在我们看不见的地方吗? -
正确,我在包含的文件中这样做。