Могу ли я сбросить переменные PHP $ _SESSION {} с помощью символа подстановки? - PullRequest
3 голосов
/ 27 июля 2011

Могу ли я сбросить с подстановочным знаком?

У меня есть набор переменных $ _SESSION, которые начинаются с одного и того же префикса.Вместо того, чтобы явно сбросить все, могу ли я использовать подстановочный знак?

(префикс остается тем же, но в зависимости от некоторых условий, достаточно, поэтому я бы не стал делать это явно)

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

$ SESSION ['а *']

Ответы [ 5 ]

5 голосов
/ 27 июля 2011

Просто переберите массив и удалите нужный ...

foreach ($_SESSION as $key => $value) {
    if (substr($key, 0, 3) == "abc") {
        unset($_SESSION[$key]);
    }
}
3 голосов
/ 27 июля 2011

вы можете попытаться сохранить правильно как это:

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

, а затем

unset($_SESSION['abc'])
2 голосов
/ 27 июля 2011

Я не думаю, что вы можете использовать подстановочный знак, но самое простое решение - пройти через массив Session и проверить ключи с помощью выражения регулярного выражения Если оно совпадает, не установлено:)

1 голос
/ 27 июля 2011
foreach ($_SESSION as $k=>$v) {
    if (substr($k, 0, strlen('abc')) == 'abc')
        unset($_SESSION[$k]);
}
1 голос
/ 27 июля 2011

Вы можете сделать это с чем-то вроде ...

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

(я бы использовал strpos вместо substr, потому что это немного быстрее)

...