- 變數 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的反函數當要判斷的內容為數組時,表中僅僅羅列了一種情況。 補充兩種容易誤會的情況:
- $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() 的一個簡單比較。
- $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';
- }
- ?>
複製代碼注: 由於這是一個語言結構而非函數,因此它無法被變數函數調用。注: 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,而什麼時候不是。 |