[php-ламо]Как разыменовать аргумент функции?

iakobi91

Туплю, но допереть не могу. Функции передается аргумент. Как внутри функции сделать так, чтобы вне её эта переменная сдохла? То есть чо-то типа
function foo (&$var)
{
unset($var);
}
$a=5;
foo ($a);
но чтобы после выполнения функции $a не существовало?

stalker33rus10

Не уверен (не могу сейчас проверить но возможно стоит попробовать
unset($GLOBALS['var']);

artimon

А нафига?
Не думаю, что это возможно и
Вы не должны этого хотеть ©

artimon

Для этого нужно знать имя переменной ('var').

Andbar

Неудивительно, что твой код не работает... Он даже в хелпе приведён:

If a variable that is PASSED BY REFERENCE is unset inside of a function, only the local variable is destroyed. The variable in the calling environment will retain the same value as before unset was called.
Имхо, передача в функцию имени переменной и удаление её из $GLOBALS - единственное решение. А зачем понадобилось такое извращение? Если переменная занимает много памяти - её можно убить там, где вызывается функция, а если не много, то пофиг вообще должно быть.

iakobi91

Я знаю, что он не работает. Просто привел, чтобы было понятно. А если это переменная сессии?

artimon

Ботать http://php.net/session до просветления.

iakobi91

Просто интересно, чего же такого нового я там прочитаю про передачу аргумента функции?

artimon

Например, то, что нынче с сессиями модно работать с помощью суперглобального массива $_SESSION и переменные из него убирать легко с помощью unset($_SESSION['var']).

iakobi91

ты не понял нифига

sbs-66

это ты не понял.
лио используй session_register / session_unregister либо $_SESSION['name'] = 'value' / unset( $_SESSION['name'] ). А переменные PHP и переменные сессии ничего общего не имеют - это разные вещи.
Т.е. даже удалив глобальную переменную ты не удалишь переменную из сессии. В глобальные переменные переменные из сессии автоматически копируются при включенном register_globals, но это единственная их связь. Кроме того, register_globals - это дурной тон и пережиток прошлого, и его рекомендуется немедленно отключить и больше никогда не вспоминать, что оно есть.

iakobi91

Бля, передаеццо любая переменная в принципе. Хоть $_FILES, хоть любой другой суперглобал или переменная.
ПО сабжу проблему решил по-другому
Оставить комментарий
Имя или ник:
Комментарий: