【发布时间】:2017-07-19 16:43:20
【问题描述】:
我正在使用 laravel 框架项目并面临以下问题。
查询:
$query = DB::table('test');
$query->select('*');
$query->where('testId = 1');
$result = $query->get();
print_r($result);
输出:
Illuminate\Support\Collection Object
(
[items:protected] => Array
(
)
)
现在我正在检查$result有没有记录。
if(empty($result))
{
echo "Not Empty check with empty()";
}
if(count($result) == 0)
{
echo "Not Empty check with count()";
}
输出:
Not Empty check with count()
问题:
我在所有项目中都使用了empty(),但在 laravel 框架项目我不知道为什么这个$result 进入count() 条件而不进入empty() .
注意:
我读到 count() 比 empty() 慢,并且 empty() 检查变量是否设置,所以我在所有返回数组或对象数组中使用 empty()。
请帮助某人。
提前致谢!
【问题讨论】:
-
您的查询返回结果且不为空,因此计数始终大于零,请使用 !empty($result) 条件检查
-
但在上述情况下,为什么它要计数()而不是空()。该数组不从数据库返回任何值,因此 !empty() 将给出不正确的 true。 @RAUSHANKUMAR
-
因为 first() 查询返回一个集合对象,所以最好使用 isEmpty() 函数
-
是的集合对象使用 php 的 count() 内置方法和 isEmpty() 是 laravel 方法,所以它当然可以工作。谢谢你的建议!