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(), если этот метод определили в классе.

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