這篇文章主要介紹了關於一張圖片弄清isset和empty函數的區別,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下
簡單談一下isset和empty的區別?
如果你是在面試,碰巧面試官提了這個問題。你可以這樣回答:
如果你想瞭解他們之間更詳細的區別,請繼續往下看...
一張圖徹底弄清
用ProcessOn畫了一張圖片
注意:
這就是isset empty對應不同變數時的返回結果,兩者的區別都匯聚在這張圖片中了。
綠色虛線框裡isset
的表現,黃色虛線框裡是!empty
的表現。可以看出,empty相比isset需要判斷更多的條件,才能確定返回結果。
如果你有些許地方不明白,或者記不住全部細節。下面我來告訴你怎麼記住這張圖片的所有內容!
礦泉水的思考
想象一下,現在桌子上有一個礦泉水瓶。瓶子可能有這4種狀況:
水瓶:瓶子裡有水
空氣瓶:水喝完了,瓶子裡面只有空氣
真空瓶:瓶子拿去抽了真空,裡面啥都沒有
案頭上沒有瓶子
把變數類比成礦泉水瓶,對應4種狀態:
小學生empty 和 中學生isset
假設我們可以用isset empty函數要判斷一個礦泉水瓶是不是空的,會有這樣的結果:
如果是空氣瓶,那麼empty認為它是空的(它看起來的確是空的啊!),而isset卻認為它不是空的(它有空氣啊!)
如果是真空瓶,那麼empty isset都會認為它是空的
如果是水瓶,那麼empty isset都會認為它不是空的
可以看出,empty就是一個不懂科學的小學生,以為瓶子看起來是空的便是空瓶!果然還是太年輕啊~
而isset是個學過物理的中學生,明白“真空”的概念——他清楚瓶子裡還有空氣!
所以上面三種情況中第1條,老司機isset經驗豐富,得出了跟小學生empty不一樣的結論。
現在我們可以知道,如果用這兩個函數來判斷變數,結果會是這樣:
如果是空氣值( ""、0、"0"、FALSE、array()...),那麼empty認為它是空的,而isset認為它不是空的
如果是真空值(NULL),那麼empty isset都認為它是空的
如果是一般值(除了這兩種情況,也就是說瓶子裡面有水),那麼empty isset都認為它不是空的
這就是在一開始給出的面試回答。現在,理解起來是不是很容易呢?
詳細對比
isset()函數
格式:bool isset ( mixed var [, mixed var [, ...]] )
功能:檢測變數是否設定
傳回值:
若變數不存在則返回 FALSE
若變數存在且其值為NULL,也返回 FALSE
若變數存在且值不為NULL,則返回 TURE
同時檢查多個變數時,每個單項都符合上一條要求時才返回 TRUE,否則結果為 FALSE
更多說明:
使用 unset() 釋放變數之後,它將不再是 isset()。
PHP函數isset()只能用於變數,傳遞任何其它參數都將造成解析錯誤。
檢測常量是否已設定可使用 defined() 函數。
empty()函數
格式:bool empty ( mixed var )
功能:檢查一個變數是否為空白
傳回值:
若變數不存在則返回 TRUE
若變數存在且其值為""、0、"0"、NULL、FALSE、array()、var $var以及沒有任何屬性的對象,則返回 TURE
若變數存在且值不為""、0、"0"、NULL、FALSE、array()、var $var以及沒有任何屬性的對象,則返回 FALSE
更多說明:
empty()的傳回值=!(boolean) var,但不會因為變數未定義而產生警告資訊。參見轉換為布爾值擷取更多資訊。
empty() 只能用於變數,傳遞任何其它參數都將造成Paser error而終止運行。
檢測常量是否已設定可使用 defined() 函數。
最完整的區別
現在我們把礦泉水和變數放到一起,畫出最完整的區別圖:
如果能你能讀懂前文內容,你將會徹底理解這兩張圖,往後isset empty區別就印刻在腦海裡了。如果還有人問你兩者區別,馬上甩出這種圖~
有興趣可以往下閱讀,官方手冊給出的例子...
PHP 手冊
這是一張將empty isset if($var)區別的表格,從表格中我們可以發現:
以上就是本文的全部內容,希望對大家的學習有所協助,更多相關內容請關注topic.alibabacloud.com!