PHP的unset()
天下维客,你可以修改的网络知识库
| PHP变量简明教程 | PHP变量的作用范围 | PHP变量的声明 | PHP的预定义变量 | PHP变量函数 | PHP的外部变量 |
| PHP的可变变量 |
- 格式:void unset ( mixed var [, mixed var [, ...]] )
- 功能:销毁指定变量,释放内存
- 版本:PHP 3, PHP 4, PHP 5
更多说明:
- unset() 销毁指定的变量。在PHP 4之后,unset()不再是一个真正的函数:它现在是一个没有返回值的语句。试图获取 unset() 的返回值将导致解析错误“Parser error”并终止运行。
例 1. unset() 示例
<?php unset ($foo); // 销毁单个变量 unset ($bar['quux']); // 销毁数组元素 unset ($foo1, $foo2, $foo3); // 销毁多个变量 ?>
[编辑]
unset()在函数体中的特别表现
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\n"; //输出“something” foo($bar); echo "$bar\n"; //foo()中的unset不影响调用环境,因此仍将输出“something” ?>
- 如果在函数中 unset() 一个静态变量,则 unset() 将销毁此变量及其所有的引用。
<?php function foo() { static $a; $a++; echo "$a\n"; unset($a); } foo(); //输出 1 foo(); //输出 2 foo(); //输出 3 ?>
- 如果您想在函数中 unset() 一个全局变量,可使用 $GLOBALS 数组来实现:
<?php function foo() { unset($GLOBALS['bar']); } $bar = "something"; foo(); ?>
注: 由于这是一个语言结构而非函数,因此它无法被变量函数调用。
[编辑]


