为什么在使用is_array检查时,laravel中的get()函数的返回不是数组


Why return of get() function in laravel is not array when check with is_array

我对laravel还很陌生,今天我运行了一些代码,但却被这段代码卡住了。

    $topic = topic::where('id', $id)->get();
    if(is_array($topic)){
        echo 'yes';
    }
    else{
        echo 'no';
    }

结果是"否",但我可以"foreach"循环浏览每个主题。

当我取消搜索时,"Foreach"只接受数组参数,但如果它是一个真实的数组,为什么_array返回"no"?

因为它不是一个数组。这是一个集合。

您可以使用toArray()方法将其转换为数组:

$topic = topic::where('id', $id)->get()->toArray();

我想添加一些

最后,您将循环了解它是一个数组还是集合。

$topic=topic::其中('id',$id)->get()->toArray();

所以,为什么您需要将其强制转换为数组,只需要额外的执行时间就可以将结果作为数组返回,而您可以对集合执行同样的操作。

还值得一提的是,由于有很多可用的方法,处理集合可以非常轻松。查看官方文档的链接。

然后您可以检查空集合,如isEmpty()等。尽量使用Laravel给你的开箱即用的东西。