当前位置:首页 > PHP > 关键词 > 变量 > 正文

PHP unsert() 销毁变量

PHP unset() 用于销毁一个或多个变量,没有返回值。使用 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() 是一个语言结构而非函数,因此它无法被变量函数调用。

本文属原创,转载请注明原文:https://www.zhimatong.com/jiaocheng/102.html

为保证教程的实用性及扩大知识面覆盖,如果您有相似问题而未解决,可联系在线客服免费技术支持。

点赞 1

联系
顾问

在线
客服
账号登录

没有账号?立即注册

忘记密码

登录即同意用户协议没有账号? 立即注册
账号注册
我已阅读并同意用户协议
立即注册
注册即同意用户协议已有账号? 立即登录
找回密码

操作步骤:邮箱验证->设置新密码

注册即同意用户协议已有账号? 立即登录