170 похожих чатов

Товарищи, приветствую. Столкнулся с интересной проблемой, которую не могу решить

и гугл тоже не помогает совсем.

Пытаюсь реализовать рекурсивное удаление значений из сессии, но внезапно, я не могу передать переменную $_SESSION как ссылку. Вот мой код:
public function unset(string $key): self
{
$keys = $this->parseKey($key);
$this->unsetRecursively($_SESSION, $keys);
return $this;
}

protected function unsetRecursively(&$SESS, array $keys): self
{
if (empty($keys)) {
unset($SESS);
} elseif (isset($SESS)) {
$key = array_shift($keys);
return $this->unsetRecursively($SESS[$key] ?? null, $keys);
}
return $this;
}
protected function parseKey(string $key): array
{
$key = preg_replace('/[\.\/\\\]+/', '/', $key);
$key = explode('/', $key);
return $key;
}

Ругается следующим образом:
::unsetRecursively(): Argument #1 ($SESS) cannot be passed by reference

Правильно ли я понимаю, что глобальную переменную $_SESSION нельзя передать как ссылку? Отсюда возникает вопрос: как тогда можно реализовать удобное удаление значения из сессии в многомерном массиве, сделав для этого удобную функцию?

суть в том, что ключи для массива я хочу передавать одной строкой вида array/some/keys которая парсится. Собственно для методов get() и set() такой подход очень комфортен и легко реализуется. а вот с unset() не прокатило. что делать?

3 ответов

6 просмотров

извини, проблема не интересная

Михаил-Успенский Автор вопроса
The Ant 🐜
извини, проблема не интересная

допустим, это субъективно. может тогда у тебя есть ответ по существу?

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Карта сайта