我正在使用一些$_SESSION
变量来过滤许多名称相似的查询记录(例如$_SESSION['nameFilter']
或$_SESSION['cityFilter']
等)。
我正在使用链接重置这些过滤器,但我想知道是否有办法取消设置名称类似的所有$_SESSION
变量:
$_SESSION[(somewords)Filter]
答案 0 :(得分:1)
使用foreach
枚举$_SESSION[]
session_start();
foreach (array_keys($_SESSION) as $key) {
if (substr($key, -6) == 'Filter') {
unset($_SESSION[$key]);
}
}
,使用the keys获取每个密钥的最后6个字符,使用substr()
(还有什么? )取消它。
一样简单:
function MergeRecursive(obj1, obj2) {
var k = Object.keys(obj1), i = 0;
for (var p in obj2) {
if(typeof obj1[p] == 'object' && typeof obj2[p] == 'object')
obj2[p] = MergeRecursive(obj1[p],obj2[p]);
else if(obj1[p] != null)
obj2[p] += obj1[p];
else
obj2[k[i]] = obj1[k[i]];
i++;
}
return obj2;
}
答案 1 :(得分:0)
步骤:
1.) Get all session variable using $_SESSION.
2.) Check in every session key if it contain "Filter" string
then unset it using unset($_SESSION[(someword)Filter]);
试试这个:
foreach($_SESSION as $key => $value){
if (strstr($key, 'Filter') == 'Filter') {
unset($_SESSION[$key]);
}
}
答案 2 :(得分:0)
假设您的密钥总是包含字符串Filter
,您可以检查它。
我建议你看一下strpos函数,它检查一个给定的针是否在一个字符串中被拼接,如果没有找到它就返回null
或者针开始的位置在那个字符串中。
然后你只需要浏览会话变量并取消设置包含单词Filter
foreach($_SESSION as $key => $value){
if (strpos($key, 'Filter') !== false) {
unset($_SESSION[$key]);
}
}
希望这会有所帮助:)
答案 3 :(得分:0)
您需要检查每个存在的会话并检查其名称。请查看以下示例代码。
<?php
session_start();
//Example records...
$_SESSION['onefilter'] = 'one';
$_SESSION['twofilter'] = 'two';
$_SESSION['threefilter'] = 'three';
$_SESSION['fourtilter'] = 'four';
//Loop untill exist session...
foreach($_SESSION AS $sessKey => $sessValue){
//Check for session name exist with 'filter' text...
if (strpos($sessKey, 'filter') !== false) {
unset($_SESSION[$sessKey]);//Unset session
}
}
echo '<pre>' . print_r($_SESSION, TRUE) . '</pre>';
/*Output...
Array
(
[fourtilter] => four
)
*/
?>
愿这对你有所帮助。