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

时间:2011-07-27 14:38:25

标签: php arrays session wildcard

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

我有一堆$ _SESSION变量,都以相同的前缀开头。我可以使用通配符而不是明确取消所有操作吗?

(前缀保持不变,但根据某些条件,这些内容会有所不同,所以我不会明确地说明这一点)

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

$ SESSION [ 'ABC *']

5 个答案:

答案 0 :(得分:5)

只需循环遍历数组并取消设置正确的数组......

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

答案 1 :(得分:3)

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

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

然后

unset($_SESSION['abc'])

答案 2 :(得分:2)

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

答案 3 :(得分:1)

你可以用......之类的东西来做这件事。

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

(我使用strpos over substr因为它更快一点)

答案 4 :(得分:1)

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