腾讯云618限量抢购
  1. PHP+MySQL数据库教程
  2. PHP进阶教程
  3. ThinkPHP 3.0/3.1 教程

PHP unsert() 销毁变量

最后更新:2011-01-28 21:42阅读:20511

unset() 用于销毁一个或多个变量。

unset()

PHP unset() 用于销毁一个或多个变量,没有返回值

语法:

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

例子:

<?php
// 销毁单个变量
unset ($var);

// 销毁单个数组元素
unset ($arr['a']);

// 销毁多个变量
unset ($var1, $var2, $var3);
?>

unset() 静态变量

严格讲,使用 unset() 销毁静态变量,只是断开了变量名和变量值之间的引用。

例子:

<?php
function foo() {
    static $b;
    $a++;
    $b++;
    echo "$a---$bn";
    unset($a,$b);
    var_dump($a);
    var_dump($b);
    echo "######################n";
}

foo();
foo();
foo();
?>

运行该例子,输出:

1---1
NULL
NULL
#######################
1---2
NULL
NULL
#######################
1---3
NULL
NULL
#######################

unset() 全局变量

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

试着比较如下两个例子:

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

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

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

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

运行第一个例子会输出:bar ,而第二个例子则不会有任何输出。

关于静态变量(static)与全局变量(global)引用更详细的官方参考文档:http://www.php.net/manual/zh/language.variables.scope.php#language.variables.scope.references

提示
  • 在很多情况下,可以让 PHP 自动管理变量而无需考虑 unset() 变量。只有在特定的,需要某个变量必须为空的时候才使用到。如:用户退出登录时,为了确保信息的安全性,可以用 unset() 清空 session 的内容。
  • unset() 尽量不要用在静态变量上,因为这与定义静态变量的初衷相悖。
  • unset() 是一个语言结构而非函数,因此它无法被变量函数调用。

参考阅读

  1. isset():检测变量是否设置
  2. empty():检测一个变量是否为空

本章节内容共分 8 部分:
  1. 1. PHP 基本语法
  2. 2. PHP 变量
  3. 3. PHP 常量
  4. 4. PHP 注释符号与注释格式
  5. 5. PHP isset() 检测变量是否设置
  6. 6. PHP empty() 检测一个变量是否为空
  7. 7. PHP unsert() 销毁变量
  8. 8. PHP defined() 检测常量是否被定义
腾讯云618限量抢购