Empty 和空字符串區別

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

換句話說,""、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,而何時不是。數組

相關文章
相關標籤/搜索