unset
PHP Manual
PHP Manual»Variable handling Функції»unset

unset

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

unsetРуйнує задані змінні

Опис

function unset(mixed $var, mixed $... = ?): void

unset() руйнує задані змінні.

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

Якщо через unset() намагаєтесь зруйнувати глобальну змінну всередині функції, то в результаті буде зруйнована лише локальна змінна. Змінна, в області видимості виклику, збереже таке ж значення, яке в неї було перед викликом unset().

<?php
function destroy_foo() 
{
    global $foo;
    unset($foo);
}

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

Поданий вище приклад виведе:

bar

Щоб зруйнувати глобальну змінну через unset() всередині функції, використовуйте масив $GLOBALS ось так:

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

$bar = "something";
foo();
?>

Якщо через unset() намагаєтесь зруйнувати змінну, яка передається ПО ЛІНКУ всередині функції, то в результаті буде зруйнована лише локальна змінна. Змінна, в області видимості виклику, збереже таке ж значення, яке в неї було перед викликом unset().

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

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

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

Поданий вище приклад виведе:

something
something

Якщо статичну змінну руйнують через unset() всередині функції, 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() example

<?php
// руйнація однієї змінної
unset($foo);

// руйнація одного елемента з масива
unset($bar['quux']);

// руйнація більше, ніж однієї змінної
unset($foo1, $foo2, $foo3);
?>

Приклад #2 Приведення типу через (unset)

Приведення типу через (unset) часто плутають з функцією unset(). Приведення типу (unset) задіюється лише для приведення до типу NULL, як доповнення до ряду з іншими приведеннями типів. В такому разі відбувається не редагування змінної, а саме приведення її типу.

<?php
$name = 'Felipe';

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

Поданий вище приклад виведе:

NULL
string(6) "Felipe"

Примітки

Зауваження: Оскільки це мовна конструкція, а не функція, її не можна викликати через змінні-функції або названі параметри.

Зауваження:

Є можливість руйнувати навіть властивості об'єкта в поточній області видимості.

Зауваження:

Починаючи з PHP 5, немає можливості руйнувати $this всередині метода об'єкта.

Зауваження:

При використанні unset() для недоступних властивостей об'єкта, буде викликатись метод __unset(), якщо його оголошено.

Прогляньте також

  • isset() - Визначає, чи для змінної встановлено значення та воно не рівне null
  • empty() - Перевіряє чи змінна є пустою
  • __unset()
  • array_splice() - Remove a portion of the array and replace it with something else

To Top