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

unset() 销毁指定的变量。注意在 PHP 3 中,unset() 将返回 TRUE(实际上是整型值 1),而在 PHP 4 中,unset() 不再是一个真正的函数:它现在是一个语句。这样就没有了返回值,试图获取 unset() 的返回值将导致解析错误。
示例

  1. <?php
  2. // 销毁单个变量
  3. unset ($foo);
  4.  
  5. // 销毁单个数组元素
  6. unset ($bar['quux']);
  7.  
  8. // 销毁一个以上的变量
  9. unset ($foo1, $foo2, $foo3);
  10. ?>

unset() 在函数中的行为会依赖于想要销毁的变量的类型而有所不同。
如果在函数中 unset() 一个全局变量,则只是局部变量被销毁,而在调用环境中的变量将保持调用 unset() 之前一样的值。

  1. <?php
  2. function destroy_foo() {
  3.     global $foo;
  4.     unset($foo);
  5. }
  6.  
  7. $foo = 'bar';
  8. destroy_foo();
  9. echo $foo;
  10. ?>

结果

  1. bar

如果在函数中 unset() 一个通过引用传递的变量,则只是局部变量被销毁,而在调用环境中的变量将保持调用 unset() 之前一样的值。

  1. <?php
  2. function foo(&$bar) {
  3.     unset($bar);
  4.     $bar = "blah";
  5. }
  6.  
  7. $bar = 'something';
  8. echo "$bar\n";
  9.  
  10. foo($bar);
  11. echo "$bar\n";
  12. ?>

结果

  1. something
  2. something

如果在函数中 unset() 一个静态变量,则 unset() 将销毁此变量及其所有的引用。

  1. <?php
  2. function foo() {
  3.     static $a;
  4.     $a++;
  5.     echo "$a\n";
  6.     unset($a);
  7. }
  8.  
  9. foo();
  10. foo();
  11. foo();
  12. ?>

结果

  1. 1
  2. 2
  3. 3

如果您想在函数中 unset() 一个全局变量,可使用 $GLOBALS 数组来实现:

  1. <?php
  2. function foo() {
  3.     unset($GLOBALS['bar']);
  4. }
  5.  
  6. $bar = "something";
  7. foo();
  8. ?>

Note:

  1. Note: 由于这是一个语言结构而非函数,因此它无法被变量函数调用。