unset函數(shù)是php自帶的一個(gè)銷毀變量的函數(shù),我們介紹了利用unset來(lái)銷毀靜態(tài)變量與全局變量的方法,同時(shí)出可以銷毀數(shù)組變量哦,下面我們看實(shí)例.
例 1. unset() 示例
實(shí)例代碼如下:
- <?php
- // 銷毀單個(gè)變量
- unset ($foo);
- // 銷毀單個(gè)數(shù)組元素
- unset ($bar['quux']);
- // 銷毀一個(gè)以上的變量
- unset ($foo1, $foo2, $foo3);
- ?>
unset() 在函數(shù)中的行為會(huì)依賴于想要銷毀的變量的類型而有所不同.
如果在函數(shù)中 unset() 一個(gè)全局變量,則只是局部變量被銷毀,而在調(diào)用環(huán)境中的變量將保持調(diào)用 unset() 之前一樣的值.
實(shí)例代碼如下:
- <?php
- function destroy_foo() {
- global $foo;
- unset($foo);
- }
- $foo = ‘bar’;
- destroy_foo();
- echo $foo;
- ?>
上邊的例子將輸出:
bar
如果在函數(shù)中 unset() 一個(gè)通過(guò)引用傳遞的變量,則只是局部變量被銷毀,而在調(diào)用環(huán)境中的變量將保持調(diào)用 unset() 之前一樣的值.
實(shí)例代碼如下:
- <?php
- function foo(&$bar) {
- unset($bar);
- $bar = “blah”;
- }
- $bar = ‘something’;
- echo “$barn”;
- foo($bar);
- echo “$barn”;
- ?>
上邊的例子將輸出:
something
something
unset() 靜態(tài)變量,嚴(yán)格講,使用 unset() 銷毀靜態(tài)變量,只是斷開了變量名和變量值之間的引用.
例子,實(shí)例代碼如下:
- <?php
- function foo() {
- static $b;
- $a++;
- $b++;
- echo "$a---$bn";
- unset($a,$b);
- var_dump($a);
- var_dump($b);
- echo "######################n";
- }
- foo();
- foo();
- foo();
- ?>
運(yùn)行該例子,輸出:
1---1
NULL
NULL
#######################
1---2
NULL
NULL
#######################
NULL
NULL
#######################
unset() 全局變量,同 unset() 靜態(tài)變量一樣,如果在函數(shù)中 unset() 一個(gè)全局變量,則只是局部變量被銷毀,而在調(diào)用環(huán)境中的變量將保持調(diào)用 unset() 之前一樣的值.
試著比較如下兩個(gè)例子:
實(shí)例代碼如下:
- <?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;
- ?>
運(yùn)行第一個(gè)例子會(huì)輸出:bar ,而第二個(gè)例子則不會(huì)有任何輸出.
新聞熱點(diǎn)
疑難解答