在laravel刀片中查找foreach循环的最后一次迭代

时间:2016-03-13 21:51:58

标签: php laravel laravel-5 blade laravel-blade

在刀片模板中,我使用last()方法查找foreach循环的最后一次迭代:

@foreach ($colors as $k => $v)
   <option value={!! $v->id !!} {{ $colors->last()->id==$v->id ? 'selected':'' }} > {!! $v->name !!} </option>
@endforeach

可以吗?也许有一种Laravel式的方法可以做同样的事情吗?

5 个答案:

答案 0 :(得分:54)

对于Laravel 5.3+,您可以使用$loop变量

$loop->last

@foreach ($colors as $k => $v)
     @if($loop->last)
         // at last loop, code here
     @endif
@endforeach

答案 1 :(得分:4)

如果您想获取集合中最后一项的实例,那么您所做的事情绝对没问题。

此外,在Laravel 5.3中,您可以使用$loop变量,它允许您获取最后一次迭代的布尔值$loop->last或获取当前迭代索引$loop->iteration,记录总数{{ 1}}以及更多The Loop Variable

$loop->count

答案 2 :(得分:3)

如果$colorsCollection$colors->last()end($colors)都有效

答案 3 :(得分:1)

不知道最后一种方法是否有效,但如果没有,请尝试:

@foreach ($colors as $v)
<option value={!! $v->id !!} @if($v == end($colors)) 'selected' @endif > {!! $v->name !!} </option>
@endforeach

答案 4 :(得分:1)

@foreach ($colors as $v)
    <option value={!! $v->id !!} {!!($v == end($colors)) ? 'selected="selected"' : '' !!} > {!! $v->name !!} </option>
@endforeach

@foreach ($colors as $v)
    <option value={!! $v->id !!} {{($v == end($colors)) ? 'selected="selected"' : '' }} > {!! $v->name !!} </option>
@endforeach