/**
* Author:RDP
* My mail:abel1314520@gmail.com
* My blog: blog.teamhaka.com
执行结果是:
bar
2 与1类似:在函数中 unset() 一个通过引用传递的变量,则只是函数内的局部变量被销毁,而在调用环境中的变量将保持调用 unset() 之前一样的值
执行结果是:
something
something
执行结果:
Before unset: 1, after unset: 1
Before unset: 2, after unset: 1
Before unset: 3, after unset: 1
* Author:RDP
* My mail:abel1314520@gmail.com
* My blog: blog.teamhaka.com
*/
1 在函数中 unset() 一个全局变量,则只是函数内的局部变量被销毁,而在调用环境中的变量将保持调用 unset() 之前一样的值。使用$GLOBALS数组来 unset() 可以在全局意义上销毁。
function destroy_foo() {
global $foo;
unset($foo);
}
$foo = 'bar';
destroy_foo();
echo $foo;
执行结果是:
bar
利用$GLOBALS数组来进行全局意义上的销毁:
function destroy_foo() {
unset($GLOBALS['foo']);
}
$foo = 'bar';
destroy_foo();
echo $foo;
2 与1类似:在函数中 unset() 一个通过引用传递的变量,则只是函数内的局部变量被销毁,而在调用环境中的变量将保持调用 unset() 之前一样的值
function foo(&$bar) {
unset($bar);
$bar = "blah";
}
$bar = 'something';
echo "$bar\n";
foo($bar);
echo "$bar\n";
执行结果是:
something
something
3 在函数中 unset() 静态变量的话,在函数内部此静态变量将被销毁。但是此静态变量在销毁前所被赋予的值仍然被保存在内存中。当再次调用这个函数时,保存在内存中的值将被唤醒复原给这个静态变量。(即:在函数中 unset() 静态变量只会在函数内部销毁,在整个脚本页面中这个值依然是存在并在函数被再次调用时被唤醒复原)
function foo() {
static $bar;
$bar++;
echo "Before unset: $bar, ";
unset($bar);
$bar++;
echo "after unset: $bar";
}
foo();
foo();
foo();
执行结果:
Before unset: 1, after unset: 1
Before unset: 2, after unset: 1
Before unset: 3, after unset: 1