void unset (mixed var [, mixed var [, ...]])
Примечание: unset() это конструкция языка.
unset() разрушает специфицированные переменные. Заметьте, что в PHP 3 unset() всегда возвращает TRUE (в действительности - integer значение 1). В PHP 4, однако, unset() это больше не true-функция: это теперь оператор. Поскольку никакое значение не возвращается, попытка получить значение unset() даст ошибку разбора.
Пример 1. unset()
// разрушить одну переменнуюunset ($foo); // разрушить один элемент массиваunset ($bar['quux']); // разрушить более одной переменнойunset ($foo1, $foo2, $foo3); | |
Поведение unset() внутри функции может варьироваться в зависимости от тог, переменную какого типы вы пытаетесь разрушить.
Если глобализированная переменная unset() внутри функции, то разрушается только локальная переменная.Переменная в вызывающем окружении останется с тем же значением, что и до вызова unset().
function destroy_foo() {global $foo;unset($foo);} $foo = 'bar';destroy_foo();echo $foo; |
Пример выведет:
Если переменная, ПЕРЕДАННАЯ ПО ССЫЛКЕ, unset() внутри функции, то разрушается только локальная переменная.Переменная в вызывающем окружении останется с тем же значением, что и до вызова unset().
function foo(&$bar) {unset($bar);$bar = "blah";} $bar = 'something';echo "$bar\n"; foo($bar);echo "$bar\n"; |
Пример выведет:
Если static-переменная unset() внутри функции, unset() разрушает эту переменную все ссылки на неё.
function foo() {static $a;$a++;echo "$a\n";unset($a);} foo();foo();foo(); |
Пример выведет:
Если вы хотите unset() глобальную переменную внутри функции, вы можете использовать массив $GLOBALS:
function foo() {unset($GLOBALS['bar']);} $bar = "something";foo(); |