Php 取消设置具有相似名称的所有会话变量

Php 取消设置具有相似名称的所有会话变量,php,session,session-variables,unset,Php,Session,Session Variables,Unset,我正在使用一些$\u SESSION变量来过滤许多具有相似名称的查询记录(例如$\u SESSION['nameFilter']或$\u SESSION['cityFilter']等等) 我正在使用一个链接来重置这些过滤器,但我想知道是否有办法取消设置所有名为如下的$\u SESSION变量: $\u SESSION[(somewords)Filter]用于枚举$\u SESSION[],用于获取每个键的最后6个字符,用于(还有什么?)取消设置 简单到: session_start(); for

我正在使用一些
$\u SESSION
变量来过滤许多具有相似名称的查询记录(例如
$\u SESSION['nameFilter']
$\u SESSION['cityFilter']
等等)

我正在使用一个链接来重置这些过滤器,但我想知道是否有办法取消设置所有名为如下的
$\u SESSION
变量:

$\u SESSION[(somewords)Filter]

用于枚举
$\u SESSION[]
,用于获取每个键的最后6个字符,用于(还有什么?)取消设置

简单到:

session_start();
foreach (array_keys($_SESSION) as $key) {
    if (substr($key, -6) == 'Filter') {
        unset($_SESSION[$key]);
    }
}

步骤:

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]);
  }
}
试试这个:

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]);
  }
}

假设您的键始终包含字符串
过滤器
,您可以检查它

我建议您看看这个函数,它检查给定的指针是否同时出现在一个字符串中,如果找不到,则返回
null
,或者返回指针在该字符串中的起始位置

然后,您只需遍历会话变量并取消设置包含单词
过滤器的变量

foreach($_SESSION as $key => $value){
  if (strpos($key, 'Filter') !== false) {
    unset($_SESSION[$key]);
  }
}

希望这有帮助:)

您需要检查每个存在的会话并检查其名称。请检查下面的示例代码

<?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
)
*/
?>


这可能会对您有所帮助。

在会话中循环,您可以检查键是否包含筛选器,如果它确实取消设置了它?如果需要,您应该切换到多维数组:
$\u会话['Filter']['name']
$\u会话['Filter']['city']
,等等。然后您只需取消设置父元素。