unset

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

unsetУдаляет переменную синтаксисом unset()

Описание

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

Языковая конструкция unset() уничтожает заданные переменные.

Поведение языковой конструкции unset() внутри функции зависит от типа переменной, которую пытаются удалить.

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

Пример #1 Пример удаления переменной конструкцией unset()

<?php

function destroy_foo()
{
global
$foo;
unset(
$foo);
}

$foo = 'bar';
destroy_foo();
echo
$foo;

?>

Внутри функции глобальную переменную удаляют через суперглобальный массив $GLOBALS:

Пример #2 Удаление конструкцией unset() глобальной переменной

<?php

function foo()
{
unset(
$GLOBALS['bar']);
}

$bar = "something";
foo();

?>

При удалении конструкцией unset() переменной, которую передали ПО ССЫЛКЕ, внутри функции удаляется только локальная переменная. Переменная в области видимости вызова функции сохранит то же значение, что и до вызова конструкции unset().

Пример #3 Удаление конструкцией unset() переменной по ссылке

<?php

function foo(&$bar)
{
unset(
$bar);
$bar = "blah";
}

$bar = 'something';
echo
"$bar\n";

foo($bar);
echo
"$bar\n";

?>

При удалении статической переменной внутри функции конструкция unset() удалит переменную только в контексте оставшейся части функции. При следующем вызове функции предыдущее значение переменной восстановится.

Пример #4 Удаление конструкцией unset() статической переменной

<?php

function foo()
{
static
$bar;
$bar++;
echo
"До удаления: $bar, ";
unset(
$bar);
$bar = 23;
echo
"после удаления: $bar\n";
}

foo();
foo();
foo();

?>

Список параметров

var

Переменная, которую требуется удалить.

vars

Дополнительные переменные.

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

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

Примеры

Пример #5 Пример поведения языковой конструкции unset()

<?php

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

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

// Удаляем набор переменных
unset($foo1, $foo2, $foo3);

?>

Примечания

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

Замечание:

Языковая конструкция умеет удалять свойства объекта, которые видны в текущем контексте.

При доступе к неустановленному свойству вызывается метод __get(), а при попытке установить неустановленное свойство вызывается метод __set(), если эти магические методы определили в классе.

Замечание:

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

Замечание:

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

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