unset

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

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

Опис

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