allwiki首页  
天下维客 你可以修改的网络知识库
首页最近更改优秀条目专题展示电脑科技词典软件学习网络知识电脑安全明星时尚天下百科
 

PHP的unset()

天下维客,你可以修改的网络知识库

Jump to: navigation, search
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();
?>

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

参考资料

Personal tools
工具
金银币拍卖 金币拍卖预展  金银币网店 熊猫金银币 生肖金银币