- PHP與MySQL高性能應用開發
- 杜江
- 568字
- 2019-06-28 14:09:22
1.2 emtpy、isset、is_null的區別
變量在所有計算機語言中均有提供,它用來保存數值、文本、對象等內容。我們可以把變量看作一個有名稱的桶,里面放著一個值,這個值可以是數字、字符串或對象,以及包含你想到的任何合法的內容。
PHP提供了3個用于測試變量值的函數,分別是:isset()、empty()和is_null()。這幾個函數均返回布爾值,有時使用不當會造成意想不到的結果,需要詳細說明。
比如,用isset()和empty()返回的結果是相反的,但有時卻并非一直如此,下面我們一起來了解這幾個函數的具體區別。
isset()用來檢測一個變量是否已聲明且值不為NULL。換句話說,只能在變量值不是NULL時返回真值。
empty()用來檢測一個變量是否為空,也就是說有如下情況時返回真值:變量是一個空字符串,false,空數組[array()], NULL,0, ' ',以及被unset刪除后的變量。
提示
在PHP5.5之后,empty()函數可以接受任意類型的表達式。
正確地檢查一個變量是否為空,可使用如下格式:
if(empty($approve)){ //etc }
這種形式可適用在PHP的任意版本中。如果你用的是PHP5.5以上版本,可以使用如下格式:
if(empty(0)){ //etc } if(empty(CreateNew())){ //etc }
以上格式在PHP5.5以上版本中均可以使用,如果小于該版本會返回解析錯誤。
is_null()函數用來判斷變量內容是否是NULL值,即返回真值的條件僅為變量是NULL時。值得一提的是,is_null()是isset()函數的反函數,區別是isset()函數可以應用到未知變量,但is_null()只能針對已聲明變量。
我們用一張表格來匯總這些函數返回值的不同之處(表1-1),表中空白表示函數返回布爾值假(false)。
表1-1 測試函數返回值的區別
