萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> php編程 >> php unset()銷毀單個或多個變量

php unset()銷毀單個或多個變量

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

copyright © 萬盛學電腦網 all rights reserved