2016/09/16 empty isset is_null的異同
empty介紹
bool empty ( mixed $var )
判斷一個變量是否被認爲是空的。當一個變量並不存在,或者它的值等同於FALSE,那麼它會被認爲不存在。如果變量不存在的話,empty()並不會產生警告。
isset介紹
bool isset ( mixed $var [, mixed $... ] )
檢測變量是否設置,並且不是 NULL。
如果已經使用 unset() 釋放了一個變量之後,它將不再是 isset()。若使用 isset() 測試一個被設置成 NULL 的變量,將返回 FALSE。同時要注意的是一個 NULL 字節("\0")並不等同於 PHP 的 NULL 常數
is_null介紹
bool is_null ( mixed $var )
如果 var 是 null 則返回 TRUE,否則返回 FALSE。
在下列情況下一個變量被認爲是 NULL:
被賦值爲 NULL。
尚未被賦值。
被 unset()。
相互區別
1.就結果來看,is_null 與 isset結果相反,變量未聲明,聲明未賦值,被賦值爲NULL,都會返回true,相反isset返回false,另外, is_null是函數, isset是語句,因此isset比is_null效率要高。
2.empty與(bool)的結果也是相反,if語句中,條件判斷時,
案例參考
isset | is_null | (bool) | empty | var_dump | |
未聲明 | false | true | false | true | NULL |
聲明未賦值 | false | true | false | true | NULL |
null | false | true | false | true | NULL |
‘’ | true | false | false | true | string(0) "" |
0 | true | false | false | true | int(0) |
1 | true | fasle | true | false | int(1) |
-1 | true | false | true | false | int(-1) |
‘0’ | true | false | false | true | string(1) "0" |
‘1’ | true | false | true | false | string(1) "1" |
‘-1‘ | true | false | true | false | string(2) "-1" |
array() | true | false | false | true | array(0){ } |
true | true | false | true | false | bool(true) |
false | true | false | false | true | bool(false) |
'true' | true | false | true | false | string(5) "true" |
'false' | true | false | true | false |
string(5) "false" |