unset

(PHP 4, PHP 5, PHP 7)

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

Описание

unset ( mixed $var [, mixed $... ] ) : 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

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

...

Другая переменная ...

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

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

Примеры

Пример #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(), если он определен.

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