PHP 的 empty 和 isset 對比
導語
老生常談的話題,之所以用這兩個函式做對比,是因為常用來判斷變數是否為空,但是它們有些不同,下面進行下對比。
定義
先來看下兩個函式的手冊
empty
boolempty
(mixed
$var
)
判斷一個變數是否被認為是空的。當一個變數並不存在,或者它的值等同於FALSE ,那麼它會被認為不存在。如果變數不存在的話,empty() 並不會產生警告。
isset
從手冊中可以看出兩個函式的重點,empty
的重點是否為空
,isset
的重點是否已設定並且非 NULL
。
對比
以下羅列幾種可能出現的空值,使用兩個函式判斷變數是否為空,對比一下返回值是否符合期待(注:isset
返回false
等同於empty
返回true
)。
變數值 | empty | isset | 是否相同 |
---|---|---|---|
false | bool(true) | bool(true) | 不相同 |
null | bool(true) | bool(false) | 相同 |
'' | bool(true) | bool(true) | 不相同 |
'0' | bool(true) | bool(true) | 不相同 |
0 | bool(true) | bool(true) | 不相同 |
array() | bool(true) | bool(true) | 不相同 |
未定義 | bool(true) | bool(false) | 相同 |
結論
由上表可以看出,empty
認為所有值都是空
;而isset
除了null
和未定義,都認為已設定並且非 NULL
。瞭解了兩個函式的不同點,在寫程式碼的時候根據需求進行選擇。