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

# unset

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

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

### Описание

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

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

- isset() - Определяет, объявили ли переменную и отличается ли её значение от null
- empty() - Проверяет, пуста ли переменная
- __unset()
- array_splice() - Удаляет часть массива и заменяет её новыми элементами
- Приведение типа конструкцией (unset)

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open