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 = []; |