1. 程式人生 > >is_null, empty, isset, unset

is_null, empty, isset, unset

iss 將不 代碼 函數功能 ... echo 4.0 簡單 ()

如果 var 是非空或非零的值,則 empty() 返回 FALSE。

換句話說,""、0、"0"、NULL、FALSE、array()、var $var; 以及沒有任何屬性的對象都將被認為是空的,如果 var 為空,則返回 TRUE。

除了當變量沒有置值時不產生警告之外,empty() 是 (boolean) var 的反義詞。

PHP中有很多函數功能類似,卻有著細微的差別...
is_null, empty, isset, unset 我們先來看看這4個函數的描述。
isset 判斷變量是否已存在(配置)
unset 把變量刪除(釋放)掉
empty 判斷變量是否為空
is_null 判斷變量是否為NULL
ok,已經開始搞人了。那麽開始,這4個函數中除了unset,其他3個都是判斷函數,unset首先出局,因為他不會搞錯,其次是is_null,我們可以把它看成是!isset,是isset的一個逆操作,下面一張表可以很清楚的說明他們之間的關系:
變量 empty is_null isset
$a=”” true false true
$a=null true true false
var $a true true false
$a=array() true false true
$a=false true false true
$a=15 false false true
$a=1 false false true
$a=0 true false true
$a=”0” true false true
$a=”true” false false true
$a=”false” false false true

從中我們可以發現只要變量是否為" "或者0,或者是false和null,只要是這些值empty都會返回true,而isset是判斷變量是否存在,只要你這個變量不是null或未賦值,返回結果都是true,而is_null正好是isset的反結果。


從這個圖中,可以很清楚的看到一種聯系:
假設 $var 是任何type。
當 empty($var) 為 true 時, (bool)($var) 為 false 。反之亦然。
同樣,
當 is_null($var) 為 true 時, isset($var) 為 false 。反之亦然。

假如:
$i=$j+1;
這裏的is_null($j)為true


可見:
isset用於判斷未定義的情況。
Empty可以判斷未定義和已定義,但是為空,為0的情況。
Is_null可以看做是isset的反函數
If($表達式)可以看做是empty的反函數
當要判斷的內容為數組時,表中僅僅羅列了一種情況,下面補充兩種容易誤會的情況
PHP代碼

$b[]=null;
$b[]=null;
//視為數組已存在且不為空

$c[]="";
$c[]="";
//視為數組已存在且不為空

empty
(PHP 3, PHP 4, PHP 5)
empty -- 檢查一個變量是否為空
描述
bool empty ( mixed var )

如果 var 是非空 或非零 的值,則 empty() 返回 FALSE。換句話說,"" 、0 、"0" 、NULL 、FALSE 、array() 、var $var ; 以及沒有任何屬性的對象 都將被認為是空的,如果 var 為空,則返回 TRUE。
除了當變量沒有置值時不產生警告之外,empty() 是 (boolean) var 的反義詞。參見轉換為布爾值獲取更多信息。
empty() 與 isset() 的一個簡單比較。

[code]
<?php
$var = 0;
// 結果為 true,因為 $var 為空
if (empty($var)) {
echo ‘$var is either 0 or not set at all‘;
}
// 結果為 false,因為 $var 已設置
if (!isset($var)) {
echo ‘$var is not set at all‘;
}
?>
[/code]

註: 由於這是一個語言結構而非函數,因此它無法被變量函數調用。
註: empty() 只檢測變量,檢測任何非變量的東西都將導致解析錯誤 。換句話說,後邊的語句將不會起作用: empty(addslashes($name))。
isset
(PHP 3, PHP 4, PHP 5)
isset -- 檢測變量是否設置
描述
bool isset ( mixed var [, mixed var [, ...]] )

如果 var 存在則返回 TRUE,否則返回 FALSE。
如果已經使用 unset() 釋放了一個變量之後,它將不再是 isset()。若使用 isset() 測試一個被設置成 NULL 的變量,將返回 FALSE。同時要註意的是一個 NULL 字節("\0")並不等同於 PHP 的 NULL 常數。
警告: isset() 只能用於變量,因為傳遞任何其它參數都將造成解析錯誤。若想檢測常量是否已設置,可使用 defined() 函數。
is_null
(PHP 4 >= 4.0.4, PHP 5)
is_null -- 檢測變量是否為 NULL
描述
bool is_null ( mixed var )

如果 var 是 null 則返回 TRUE,否則返回 FALSE。
查看 NULL 類型獲知變量什麽時候被認為是 NULL,而什麽時候不是。

is_null, empty, isset, unset