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

Php 为什么在使用is_数组检查时,laravel中get()函数的返回不是数组,php,arrays,laravel,Php,Arrays,Laravel,我刚刚接触laravel,今天我运行了一些代码,并被困在这段代码中 $topic = topic::where('id', $id)->get(); if(is_array($topic)){ echo 'yes'; } else{ echo 'no'; } 结果是“否”,但我可以“foreach”循环每个主题 正如我所说,“Foreach”只接受数组参数,但如果它是一个实数组,为什么数组返回“no”?因为它不是数组

我刚刚接触laravel,今天我运行了一些代码,并被困在这段代码中

    $topic = topic::where('id', $id)->get();
    if(is_array($topic)){
        echo 'yes';
    }
    else{
        echo 'no';
    }
结果是“否”,但我可以“foreach”循环每个主题


正如我所说,“Foreach”只接受数组参数,但如果它是一个实数组,为什么数组返回“no”?

因为它不是数组。这是一个好主意

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

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

我想补充一点

最后,您将循环查看它是数组还是集合

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


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

同样值得一提的是,由于大量的操作,处理集合可以非常轻松。检查链接表单官方文档

然后可以检查空集合,如
isEmpty()
等。
尽量使用Laravel提供给您的现成信息。

您对
foreach
的理解是错误的。可以使用
foreach
(以及数组)迭代任何内容,谢谢!。所以我可以循环遍历集合,因为laravel使它能够(laravel核心使集合充当迭代器)某种程度上。但不是Laravel,是PHP做的。