foreach与空数组的错误

时间:2015-11-27 22:48:07

标签: php laravel-5 blade

我在使用Blade作为模板电机的Laravel 5中工作。我将一个数组从控制器传递给视图,我注意到当我使用 foreach clausule循环它并且数组为空时它会出错,正是这样:

Invalid argument supplied for foreach() 

我在控制器中遇到了同样的错误,我暂时修复它:

if(count($student)!=0)

我说临时因为我不认为这是最好的方法。 控制器中的代码是:

foreach($students as $student){
        if(count($student->contracts)!=0)
            foreach($student->contracts as $contract){
                 //something
            }//end foreach
    }//end foreach

我对数组做了一些操作,然后将它们发送到视图:

return view('myview')->with(['students'=>$students]);

数组正确传递给视图。我说是foreach,因为早些时候我有数据库充满了寄存器,它工作正常,但现在我有一些学生没有合同,然后我得到了这个错误。但是,在视图中我有同样的错误。那么,这是正常的吗?我怎么能以更好的方式修复它?为什么当数组为空时, foreach clausule会给出错误?

2 个答案:

答案 0 :(得分:2)

如果$student->contracts中包含的数组为空,PHP将不会返回该警告。如果它是无效类型(即不是数组),它将返回它。

不是检查count()的{​​{1}},而是检查它是否实际上是一个数组,如下所示:

$student->contracts

答案 1 :(得分:1)

试试这个

$people = [
        "Person A", "Person B", "Person C"
];
return view ('pages', compact('people'));

并像这样循环:

@if (count($people))
    <h3>People:</h3>
    <ul>
        @foreach($people as $person)
            <li>{{ $person }}</li>
        @endforeach
    </ul>
@endif