Функция приращения _SESSION - PullRequest
0 голосов
/ 09 ноября 2011

Моя функция:

function SessionSet($s, $v = '') {
    if (is_array($s)) {
        foreach ($s as $k => $v) $_SESSION[$k] = $v;
    } else {
        $_SESSION[$s] = $v;
    }
}

Возможно, заставить ее работать так:

SessionSet('user_visits')++;

Просто простое увеличение, но у вас нет никаких идей, как ...

Ответы [ 4 ]

5 голосов
/ 09 ноября 2011

Как насчет

$_SESSION['user_visits']++;

вместо?

Вы не можете увеличить возвращаемое значение функции - некуда хранить увеличенное значение.

1 голос
/ 09 ноября 2011

Почему не что-то подобное внутри вашей функции?Затем, когда вы вызываете функцию, она выполняет приращение внутри.Или я пропустил ваш настоящий вопрос?

$_SESSION[$s] = $v; //somewhere in your code you init the variable
//and in your function just do
$_SESSION[$s] = $_SESSION[$s]++;

//Assuming variable in seeion is incrementable!
1 голос
/ 09 ноября 2011

Нет, это невозможно. Вы можете вернуть ссылку из функции, но PHP по-прежнему не разрешает операции мутатора над возвращаемыми значениями функции.

0 голосов
/ 09 ноября 2011

Невозможно напрямую изменить возвращаемое значение функции.

Это приведет к фатальной ошибке:

Неустранимая ошибка: Невозможно использовать возвращаемое значение функциив контексте записи

Но вы можете просто получить доступ к $_SESSION['user_visits'] после вызова функции.

...