(PHP 4, PHP 5, PHP 7, PHP 8)
unset — Руйнує задані змінні
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(), якщо його оголошено.