Laravel 视图中怎么使用循环语句(foreach if)输出

Posted by

Laravel可以使用@foreach 来在视图里面循环输出。循环过程中,在循环体内有一个可用的 $loop 变量。该变量提供了用于访问诸如当前循环的索引、当前是否为第一次或最后一次循环之类的信息:

@foreach ($users as $user)
    @if ($loop->first)
        <p>这是第一个循环</p>
    @endif
    @if ($loop->last)
        <p>这是最后一个循环</p>
    @endif
    <p>User ID 为:{{ $user->id }}</p>
@endforeach

循环输出结果类似下面

<p>这是第一个循环</p>
<p>User ID 为:1</p>
<p>User ID 为:2</p>
<p>User ID 为:3</p>
<p>User ID 为:4</p>
<p>这是最后一个循环</p>
<p>User ID 为:5</p>

在实际中要输出某个变量如下:

 @foreach($payment as $key =>$value)
    <li class="list-group-item">
    <div class="radio" onclick="choseMethod(this,'{{ $value->name }}')" >
    @if ($loop->first)
       <input type="radio" name="optradio" class="input-radio" checked="checked">
    @else
      <input type="radio" name="optradio" class="input-radio">
   @endif
    <span  class="radio-span">{{ $value->name }}</span>
     <img src="{{ URL::asset('uploads/'.$value->logo) }}" alt="{{ $value->name }}" class="radio-img"  style="width: 100px;height: 50px">
     </div>
@endforeach


在循环里面使用了if else endif 来做条件判断输出。

@if ($loop->first)
      <input type="radio" name="optradio" class="input-radio" checked="checked"
@else
    <input type="radio" name="optradio" class="input-radio">
@endif

多个循环嵌套输出

在子循环嵌套中,可以借助 parent 属性访问父循环的 $loop 变量:

@foreach ($users as $user)
    @foreach ($user->posts as $post)
        @if ($loop->parent->first)
            第一级嵌套里的第一个循环
        @endif
    @endforeach
@endforeach

所有属性

$loop 变量还包含其它几种有用的属性:

属性	描述
$loop->index	当前迭代的索引(从 0 开始计数)。
$loop->iteration	当前循环迭代(从 1 开始计算)。
$loop->remaining	循环中剩余迭代的数量。
$loop->count	被迭代的数组元素的总数。
$loop->first	是否为循环的第一次迭代。
$loop->last	是否为循环的最后一次迭代。
$loop->depth	当前迭代的嵌套深度级数。
$loop->parent	嵌套循环中,父循环的循环变量