unset函數是php內建的一個銷毀變數的函數,我們介紹了利用unset來銷毀靜態變數與全域變數的方法,同時出可以銷毀陣列變數哦,下面我們看執行個體。
例 1. unset() 樣本
<?php// 銷毀單個變數unset ($foo);// 銷毀單個數組元素unset ($bar['quux']);// 銷毀一個以上的變數unset ($foo1, $foo2, $foo3);?>
unset() 在函數中的行為會依賴於想要銷毀的變數的類型而有所不同。
如果在函數中 unset() 一個全域變數,則只是局部變數被銷毀,而在調用環境中的變數將保持調用 unset() 之前一樣的值。
<?phpfunction destroy_foo() {global $foo;unset($foo);}$foo = ‘bar’;destroy_foo();echo $foo;?>
上邊的例子將輸出:
bar
如果在函數中 unset() 一個通過引用傳遞的變數,則只是局部變數被銷毀,而在調用環境中的變數將保持調用 unset() 之前一樣的值。
<?phpfunction foo(&$bar) {unset($bar);$bar = “blah”;}$bar = ‘something’;echo “$barn”;foo($bar);echo “$barn”;?>
上邊的例子將輸出:
something
something
unset() 靜態變數
嚴格講,使用 unset() 銷毀靜態變數,只是斷開了變數名和變數值之間的引用。
例子:
<?phpfunction foo() { static $b; $a++; $b++; echo "$a---$bn"; unset($a,$b); var_dump($a); var_dump($b); echo "######################n";}foo();foo();foo();?>
運行該例子,輸出:
1---1NULLNULL#######################1---2NULLNULL#######################1---3NULLNULL#######################
unset() 全域變數
同 unset() 靜態變數一樣,如果在函數中 unset() 一個全域變數,則只是局部變數被銷毀,而在調用環境中的變數將保持調用 unset() 之前一樣的值。
試著比較如下兩個例子:
<?phpfunction destroy_foo() { global $foo; unset($foo);}$foo = 'bar';destroy_foo();echo $foo;?>
<?phpfunction destroy_foo() { global $foo; unset($GLOBALS['foo']);}$foo = 'bar';destroy_foo();echo $foo;?>
運行第一個例子會輸出:bar ,而第二個例子則不會有任何輸出。