Laravel Collection 判斷是否為空:empty() 與 isEmpty() 的差異
Laravel Collection 判斷是否為空的差異:empty()
vs isEmpty()
在 Laravel 中,當我們使用 get()
或 collect()
建立一個集合(Collection)時,即使裡面沒有任何元素,回傳的也會是一個 Collection 物件。
這就造成一個常見的誤會:為什麼明明查不到資料,用 empty()
判斷卻不會是空的?
為什麼 empty()
無效?
在 PHP 中,empty()
判斷的是「變數是否為空值」,例如 null
、false
、0
、空字串 ''
、或空陣列 []
。
但是 物件不是空值,就算裡面沒有任何資料,empty($object)
仍然會回傳 false
。
1 | $tasks = collect([]); |
正確做法:使用 isEmpty()
Laravel 的 Collection 提供了 isEmpty() 方法,可以正確判斷集合內是否沒有元素。
1 | $tasks = Task::query()->where('id', 0)->get(); |
範例比較
1 | $emptyArray = []; |