例 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 ,而第二個例子則不會有任何輸出。