unset

(PHP 4, PHP 5, PHP 7, PHP 8)

unsetУдаляет переменную

Описание

unset(mixed$var, mixed...$vars): void

Языковая конструкция 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

Удаляемая переменная.

vars

Следующие переменные.

Возвращаемые значения

Функция не возвращает значения после выполнения.

Примеры

Пример #1 Пример использования unset()

<?php
// удаляем одну переменную
unset($foo);

// удаляем один элемент массива
unset($bar['quux']);

// удаляем несколько переменных
unset($foo1, $foo2, $foo3);
?>

Пример #2 Использование приведения типа (unset)

Приведение типа (unset) часто путают с конструкцией unset(). Приведение типа (unset) приводит только к значению NULL и было добавлено только для полноты реализации. Оно не меняет значение приводимой переменной. С PHP 7.2.0 преобразование типа (unset) объявлено устаревшим и удалено в PHP 8.0.0.

<?php
$name
= 'Felipe';

var_dump((unset) $name);
var_dump($name);
?>

Результат выполнения приведённого примера:

NULL string(6) "Felipe"

Примечания

Замечание: Поскольку это языковая конструкция, а не функция, её нельзя вызывать как переменную функцию или передавать как именованный аргумент.

Замечание:

Можно удалить свойства объекта, видимые в текущем контексте.

Если определены (в классе), метод __get() будет вызван при попытке получить неустановленное свойство, а метод __set() будет вызван при попытке установить неопределённое свойство.

Замечание:

Невозможно удалить псевдопеременную текущего контекста $this внутри метода объекта.

Замечание:

При вызове конструкции unset() на недоступных или необъявленных свойствах объекта будет вызван метод перегрузки __unset(), если он определён.

Смотрите также

To Top