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