dtlc84438 2015-11-27 22:48
浏览 339

foreach与空数组的错误

I'm working in Laravel 5 using Blade as motor of templates. I'm passing an array from the controller to the view, and I noticed that when I loop on it using the foreach clausule and the array is empty it gives error, exactly this:

Invalid argument supplied for foreach() 

I had the same error in the controller and I fix it temporaly making:

if(count($student)!=0)

I said temporaly because I don't think it this the best way to do it. The code in the controller is:

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

I made some operations over the arrays, and then I send them to the view:

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

The array is passing to the view correctly. I said is the foreach, beacause earlier I had the database full of registers and it worked fine, but now I have some students that doesn't have contracts and then I got that error. But, in the view I have the same error. So, it's normal? how could I fix it in a better way? why when the array is empty the foreach clausule gives that error?

  • 写回答

2条回答 默认 最新

  • dongyumiao5210 2015-11-27 23:08
    关注

    Try this

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

    and loop through it like this:

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

报告相同问题?

悬赏问题

  • ¥20 模型在y分布之外的数据上预测能力不好如何解决
  • ¥15 processing提取音乐节奏
  • ¥15 gg加速器加速游戏时,提示不是x86架构
  • ¥15 python按要求编写程序
  • ¥15 Python输入字符串转化为列表排序具体见图,严格按照输入
  • ¥20 XP系统在重新启动后进不去桌面,一直黑屏。
  • ¥15 opencv图像处理,需要四个处理结果图
  • ¥15 无线移动边缘计算系统中的系统模型
  • ¥15 深度学习中的画图问题
  • ¥15 java报错:使用mybatis plus查询一个只返回一条数据的sql,却报错返回了1000多条