[php-ламо]Как разыменовать аргумент функции?
unset($GLOBALS['var']);
![](/images/graemlins/confused.gif)
Не думаю, что это возможно и
Вы не должны этого хотеть ©
Для этого нужно знать имя переменной ('var').
Имхо, передача в функцию имени переменной и удаление её из $GLOBALS - единственное решение. А зачем понадобилось такое извращение? Если переменная занимает много памяти - её можно убить там, где вызывается функция, а если не много, то пофиг вообще должно быть.
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.
Я знаю, что он не работает. Просто привел, чтобы было понятно. А если это переменная сессии?
http://php.net/session до просветления.
Ботать
Просто интересно, чего же такого нового я там прочитаю про передачу аргумента функции?
Например, то, что нынче с сессиями модно работать с помощью суперглобального массива $_SESSION и переменные из него убирать легко с помощью unset($_SESSION['var']).
ты не понял нифига
лио используй session_register / session_unregister либо $_SESSION['name'] = 'value' / unset( $_SESSION['name'] ). А переменные PHP и переменные сессии ничего общего не имеют - это разные вещи.
Т.е. даже удалив глобальную переменную ты не удалишь переменную из сессии. В глобальные переменные переменные из сессии автоматически копируются при включенном register_globals, но это единственная их связь. Кроме того, register_globals - это дурной тон и пережиток прошлого, и его рекомендуется немедленно отключить и больше никогда не вспоминать, что оно есть.
ПО сабжу проблему решил по-другому
Оставить комментарий
iakobi91
Туплю, но допереть не могу. Функции передается аргумент. Как внутри функции сделать так, чтобы вне её эта переменная сдохла? То есть чо-то типаfunction foo (&$var)
{
unset($var);
}
$a=5;
foo ($a);
но чтобы после выполнения функции $a не существовало?