Функция PHP unset

void unset (mixed var [, mixed var [, ...]])

Примечание: unset() это конструкция языка.

unset() разрушает специфицированные переменные. Заметьте, что в PHP 3 unset() всегда возвращает TRUE (в действительности - integer значение 1). В PHP 4, однако, unset() это больше не true-функция: это теперь оператор. Поскольку никакое значение не возвращается, попытка получить значение unset() даст ошибку разбора.

Пример unset()

  <?php
   // разрушить одну переменную
   unset ($foo);
   // разрушить один элемент массива
   unset ($bar['quux']);
   // разрушить более одной переменной
   unset ($foo1, $foo2, $foo3);
?>

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

Если глобализированная переменная unset() внутри функции, то разрушается только локальная переменная. Переменная в вызывающем окружении останется с тем же значением, что и до вызова unset().

<?php
   function destroy_foo() {
      global $foo;
      unset($foo);
   }
   $foo = 'bar';
   destroy_foo();
   echo $foo;
?>

Пример выведет:

bar  

Если переменная, ПЕРЕДАННАЯ ПО ССЫЛКЕ, unset() внутри функции, то разрушается только локальная переменная.Переменная в вызывающем окружении останется с тем же значением, что и до вызова unset().

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

Пример выведет:

  something something  

Если static-переменная unset() внутри функции, unset() разрушает эту переменную все ссылки на неё.

<?
   function foo() {
      static $a;
      $a++;
      echo "$a ";
      unset($a);
   }
   foo();
   foo();
   foo();
?>

Пример выведет:

1 2 3  

Если вы хотите unset() глобальную переменную внутри функции, вы можете использовать массив $GLOBALS:

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

См. также isset() и empty().