【问题标题】:Array is empty, but it keeps thinking there somthing inside数组是空的,但它一直在想里面有什么东西
【发布时间】:2015-06-22 21:34:16
【问题描述】:
$result = usr::where("username", $username)->where("password", sha1($password))->get();

    echo $result;


    if(!empty($result)){
        echo " -WORKED :D";
    }else{ echo "FAILED D:"; }

结果总是 '[] - WORKED :D' ,数据库没有返回任何东西,而且数组显然是空的,为什么它认为数组里面有东西?

编辑:

好的,所以我找到了一个相对较快的修复程序,我不确定为什么会这样,但empty() 不行。

我刚刚使用了if(count($results) < 1){,它运行良好,谁能解释为什么它不适用于empty() 条件?

【问题讨论】:

  • 检查计数而不是检查空,即count($result) > 0 类似的东西
  • var_dump($result); 显示什么?
  • 因为 $result 很可能是一个对象(Collection 类型?),而不管找到的记录如何
  • var_dump ($result) 吐出 Eloquent 的全部内容,所以我不会用 40 英尺长的杆子碰它
  • The documentation for empty() 非常清楚它认为哪些值为空。长度为 0 的 Eloquent Collection 不是其中之一。

标签: php arrays laravel-5


【解决方案1】:

因为它不是空的,所以你得到一个没有填充数据的集合。
因为集合是自定义对象,PHP 不知道它可以为空。

你需要来自 Laravel 框架的 isEmpty 方法。

代码行是:

if(!$result->isEmpty())

【讨论】:

    【解决方案2】:

    get() 返回一个 Laravel 集合 (Illuminate\Database\Eloquent\Collection),而不是一个数组。您可以使用$result->isEmpty()$result->count() > 0 检查其是否为空。

    您也可以使用$result->toArray()将集合转换为普通的php数组。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-19
      • 1970-01-01
      • 2021-03-25
      • 2014-02-12
      • 1970-01-01
      • 2014-01-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多