| $x | isset($x) | empty($x) | is_null($x) |
|---|---|---|---|
| null | false | true | true |
| [] | true | true | false |
| "" | true | true | false |
| 0 | true | true | false |
| "0" | true | true | false |
empty() 的話,0 "0" "" 都會判定為空的。isset 只有 null 會是 false,其他情況都會是 true。注意!
== null跟=== null不一樣,==null的結果會跟empty一樣
Laravel source code 可以看到滿多 is_null 的使用
is_null 的優缺點
優點:
缺點:
另外,如果手上有一個 collection,想檢查它是否為空,上面的 empty 和 is_null 都沒有用
$c = collect([]); // 做一個空的 collection
dump(is_null($c)); // false
dump(empty($c)); // false
幸好 collection 自己有提供一個方法去檢查!
dump($c->isEmpty()); // true