unset函数是php自带的一个销毁变量的函数,我们介绍了利用unset来销毁静态变量与全局变量的方法,同时出可以销毁数组变量哦,下面我们看实例.
例 1. unset() 示例
实例代码如下:
- <?php
-
- unset ($foo);
-
- unset ($bar['quux']);
-
- unset ($foo1, $foo2, $foo3);
- ?>
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 “$barn”;
- foo($bar);
- echo “$barn”;
- ?>
上边的例子将输出:
something
something
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 ,而第二个例子则不会有任何输出. |