我可以用通配符取消设置PHP $_SESSION{}变量吗?


Can I unset PHP $_SESSION{} variables with a wildcard?

我可以用通配符取消设置吗?

我有一堆$_SESSION变量都以相同的前缀开始。我可以使用通配符而不是显式地取消全部设置吗?

(前缀保持不变,但根据某些条件,足够的内容会有所不同,所以我宁愿不显式地这样做)

$ _SESSION [' abc_1 ']
$ _SESSION [' abc_2 ']
$ _SESSION [' abc_fish ']
$ _SESSION [' abc_xyz ']

<美元em>会话("abc *")

循环遍历数组并取消右边的设置…

foreach ($_SESSION as $key => $value) {
    if (substr($key, 0, 3) == "abc") {
        unset($_SESSION[$key]);
    }
}

您可以尝试正确保存这样的:

$_SESSION['abc']['1']
$_SESSION['abc']['2']
$_SESSION['abc']['fish']
$_SESSION['abc']['xyz'] 

unset($_SESSION['abc'])

我认为您不能使用通配符,但是最简单的解决方案是遍历Session数组并使用正则表达式检查键。如果匹配,取消设置:)

你可以这样做…

    foreach ($_SESSION as $key=>$val) if (strpos($key,'abc_') !== false) unset($_SESSION[$key]);

(我将使用strpos而不是substr,因为它更快一些)

foreach ($_SESSION as $k=>$v) {
    if (substr($k, 0, strlen('abc')) == 'abc')
        unset($_SESSION[$k]);
}