iT邦幫忙

2021 iThome 鐵人賽

DAY 8
0
Modern Web

工作後才知道的後端 30 件小事系列 第 8

一些類似判斷是否為空的方法比較:isset, empty, is_null

比較

$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

is_null 和 ===null 的差別

注意!== null=== null 不一樣,==null 的結果會跟 empty 一樣

Laravel source code 可以看到滿多 is_null 的使用

is_null 的優缺點

  • 優點:

    • 較易讀 (?)
    • 較不容易寫錯 (少寫一個等號之類的)
  • 缺點:

    • 可能比較慢 (?) (詳細可看討論串)

Check collection is empty

另外,如果手上有一個 collection,想檢查它是否為空,上面的 emptyis_null 都沒有用

$c = collect([]);  // 做一個空的 collection

dump(is_null($c)); // false
dump(empty($c));   // false

幸好 collection 自己有提供一個方法去檢查!

dump($c->isEmpty()); // true

Reference


上一篇
PHP 檢查是否符合程式碼風格:CodeSniffer
下一篇
Laravel 實作 Webhooks
系列文
工作後才知道的後端 30 件小事20

尚未有邦友留言

立即登入留言