我可以用通配符取消设置吗?
我有一堆$_SESSION变量都以相同的前缀开始。我可以使用通配符而不是显式地取消全部设置吗?
(前缀保持不变,但根据某些条件,足够的内容会有所不同,所以我宁愿不显式地这样做)
$ _SESSION [' abc_1 ']
$ _SESSION [' abc_2 ']
$ _SESSION [' abc_fish ']
$ _SESSION [' abc_xyz ']
<美元em>会话("abc *")美元em>
循环遍历数组并取消右边的设置…
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]);
}