2021-05-12 14:32:11
PHP unset函數原理及使用方法解析
unset—釋放給定的變數
說明
unset(mixed$var[,mixed$...] ) :void
unset()銷燬指定的變數。
unset()在函數中的行爲會依賴於想要銷燬的變數的型別而有所不同。
如果在函數中unset()一個全域性變數,則只是區域性變數被銷燬,而在呼叫環境中的變數將保持呼叫unset()之前一樣的值。
<?php function destroy_foo() { global $foo; unset($foo); } $foo = 'bar'; destroy_foo(); echo $foo; ?>
以上例程會輸出:
bar
如果您想在函數中unset()一個全域性變數,可使用$GLOBALS陣列來實現:
<?php function foo() { unset($GLOBALS['bar']); } $bar = "something"; foo(); ?>
如果在函數中unset()一個通過參照傳遞的變數,則只是區域性變數被銷燬,而在呼叫環境中的變數將保持呼叫unset()之前一樣的值。
<?php function foo(&$bar) { unset($bar); $bar = "blah"; } $bar = 'something'; echo "$barn"; foo($bar); echo "$barn"; ?>
以上例程會輸出:
something
something
如果在函數中unset()一個靜態變數,那麼在函數內部此靜態變數將被銷燬。但是,當再次呼叫此函數時,此靜態變數將被複原爲上次被銷燬之前的值。
<?php function foo() { static $bar; $bar++; echo "Before unset: $bar, "; unset($bar); $bar = 23; echo "after unset: $barn"; } foo(); foo(); foo(); ?>
以上例程會輸出:
Before unset: 1, after unset: 23
Before unset: 2, after unset: 23
Before unset: 3, after unset: 23
參數
var
要銷燬的變數。
...
其他變數……
返回值
沒有返回值。
範例
Example #1unset()範例
<?php
// 銷燬單個變數
unset ($foo);
// 銷燬單個數組元素
unset ($bar['quux']);
// 銷燬一個以上的變數
unset($foo1, $foo2, $foo3);
?>
Example #2 使用(unset)型別強制轉換
(unset)型別強制轉換常常和函數unset()引起困惑。 爲了完整性,(unset)是作爲一個NULL型別的強制轉換。它不會改變變數的型別。
<?php
$name = 'Felipe';
var_dump((unset) $name);
var_dump($name);
?>
以上例程會輸出:
NULL
string(6) "Felipe"
註釋
- Note:因爲是一個語言構造器而不是一個函數,不能被可變函數呼叫。
- It is possible to unset even object properties visible in current context.
- 在 PHP 5 之前無法在物件裡銷燬$this。
- 在unset()一個無法存取的物件屬性時,如果定義了__unset()則對呼叫這個過載方法。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援it145.com。
相關文章