(PHP 4, PHP 5, PHP 7)
unset — Удаляет переменную
unset() удаляет перечисленные переменные.
Поведение unset() внутри пользовательской функции может отличаться, в зависимости от того, какой тип имеет переменная, которую необходимо удалить.
Если переменная, объявленная глобальной, удаляется внутри функции, то будет удалена только локальная переменная. Переменная в области видимости вызова функции сохранит то же значение, что и до вызова unset().
<?php
function destroy_foo()
{
global $foo;
unset($foo);
}
$foo = 'bar';
destroy_foo();
echo $foo;
?>
Результат выполнения данного примера:
bar
Если необходимо удалить глобальную переменную внутри функции, то для этого нужно использовать массив $GLOBALS:
<?php
function foo()
{
unset($GLOBALS['bar']);
}
$bar = "something";
foo();
?>
Если переменная, которая передается ПО ССЫЛКЕ, удаляется внутри функции, то будет удалена только локальная переменная. Переменная в области видимости вызова функции сохранит то же значение, что и до вызова unset().
<?php
function foo(&$bar)
{
unset($bar);
$bar = "blah";
}
$bar = 'something';
echo "$bar\n";
foo($bar);
echo "$bar\n";
?>
Результат выполнения данного примера:
something something
Если статическая переменная удаляется внутри функции, unset() удалит переменную только в контексте дальнейшего выполнения функции. При последующем вызове предыдущее значение переменной будет восстановлено.
<?php
function foo()
{
static $bar;
$bar++;
echo "До удаления: $bar, ";
unset($bar);
$bar = 23;
echo "После удаления: $bar\n";
}
foo();
foo();
foo();
?>
Результат выполнения данного примера:
До удаления: 1, После удаления: 23 До удаления: 2, После удаления: 23 До удаления: 3, После удаления: 23
var
Удаляемая переменная.
...
Другая переменная ...
Эта функция не возвращает значения после выполнения.
Пример #1 Пример использования unset()
<?php
// удаляем одну переменную
unset($foo);
// удаляем один элемент массива
unset($bar['quux']);
// удаляем несколько переменных
unset($foo1, $foo2, $foo3);
?>
Пример #2 Использование приведения типа (unset)
Приведение типа (unset) часто путают с функцией unset(). Приведение типа (unset) приводит только к значению NULL и было добавлено исключительно для полноты реализации. Оно не меняет значение приводимой переменной. С PHP 7.2.0 преобразование типа (unset) объявлено устаревшим.
<?php
$name = 'Felipe';
var_dump((unset) $name);
var_dump($name);
?>
Результат выполнения данного примера:
NULL string(6) "Felipe"
Замечание: Поскольку это языковая конструкция, а не функция, она не может вызываться при помощи переменных функций.
Замечание:
Существует возможность удалить даже атрибуты объекта, видимые в текущем контексте.
Замечание:
Невозможно удалить $this внутри метода объекта.
Замечание:
При использовании unset() на недоступных или необъявленных свойствах объекта, будет вызван встроенный метод объекта __unset(), если он определен.