【问题标题】:PHP - Unset $_SESSION variables using foreachPHP - 使用 foreach 取消设置 $_SESSION 变量
【发布时间】:2017-09-12 05:21:19
【问题描述】:

是否可以使用foreach 循环取消设置$_SESSION 变量?这是一个例子。

<?php
session_start();
$_SESSION['one'] = 'one';
$_SESSION['two'] = 'two';
$_SESSION['three'] = 'three';
print_r($_SESSION);
foreach($_SESSION as $value) {
    unset($value);
}
session_destroy();
print_r($_SESSION);
?>

我认为这个脚本应该可以工作,但它不适合我。它给了我这个输出,没有取消设置变量:

数组 ( [一] => 一 [二] => 二 [三] => 三)
数组 ( [一] => 一[二] => 二[三] => 三)

也许这是与超全局数组有关的问题。我无论如何都可以使用它们的键取消设置变量:

unset($_SESSION['one']);

【问题讨论】:

    标签: php arrays session foreach unset


    【解决方案1】:

    取消设置,

    unset($_SESSION);
    

    【讨论】:

    • 来自 php.net:不要使用 unset($_SESSION) 取消设置整个 $_SESSION,因为这将禁用通过 $_SESSION 超全局变量注册会话变量。跨度>
    【解决方案2】:

    通过引用传递变量:

    foreach($_SESSION as &$value) {
        // edit $value
    }
    

    【讨论】:

    • 这个解决方案对我不起作用,但@Marwelln 的解决方案是。
    • 您可以使用session_unset 取消设置所有会话
    【解决方案3】:

    您必须获取密钥和unset $_SESSION[$key] 或通过引用传递您的变量(不确定是否可以通过unset 引用)。

    foreach($_SESSION as $key => $value) {
        unset($_SESSION[$key]);
    }
    
    foreach($_SESSION as &$value) {
        unset($value);
    }
    

    【讨论】:

    • 第一个解决方案有效,而第二个解决方案无效。谢谢!
    猜你喜欢
    • 2012-08-30
    • 2012-01-26
    • 2012-11-19
    • 1970-01-01
    • 2012-04-08
    • 1970-01-01
    • 2020-03-02
    • 1970-01-01
    • 2011-01-08
    相关资源
    最近更新 更多