2016-01-29 5 views
0

Я использую переменные $_SESSION для фильтрации многих записей запросов с похожим именем (например, $_SESSION['nameFilter'] или $_SESSION['cityFilter'] и т. Д.).Исключить все переменные сеанса с похожим именем

Я использую ссылку для сброса этих фильтров, но я хочу знать, если есть способ, чтобы сбросить все $_SESSION переменные, которые имеют имя, как:

$_SESSION[(somewords)Filter]

+1

Пройти через сеанс, и вы можете проверить, содержит ли ключ фильтр, если он его отключил? – Naruto

+1

Вы должны переключиться на многомерный массив, если это требование: '$ _SESSION ['filter'] ['name']', '$ _SESSION ['filter'] ['city']' и т. Д. Тогда у вас просто есть для отмены родительского элемента. – jeroen

ответ

0

Использование foreach для перечислите the keys из $_SESSION[], используйте substr(), чтобы получить последние 6 символов каждой клавиши, используйте unset() (что еще?) отмените его.

Как легко, как:

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

это работа для меня! Спасибо! – maures

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

Предполагая, что ключи всегда cointain строку Filter вы можете с черт возьми.

Я предлагаю вам взглянуть на функции strpos, которая проверяет, является ли данная игла cointaned в строке и возвращает null в случае, если он не найден, или положения, где игла начинается в этой строке.

Тогда вам нужно только пройти через переменные сессии и неустановленные те, содержащего слово Filter

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

Надеется, что это помогает :)

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

Это может помочь вам.

 Смежные вопросы

  • Нет связанных вопросов^_^