2019-12-06 |

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() 是一个语言结构而非函数,因此它无法被变量函数调用。

0

流程控制

发表评论

    评价:
    验证码: 点击我更换图片
    最新评论