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

use*_*668 21 php laravel blade laravel-5 laravel-blade

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

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

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

Tom*_*Kur 71

至于Laravel 5.3+,你可以使用$ loop变量

$loop->last

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

  • 仅适用于Laravel版本5.3 (5认同)
  • 您可能想更正 if 条件 它应该有括号而不是双花括号:) (2认同)

Seb*_*ski 5

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

此外,在 Laravel 5.3 中,您可以使用$loop变量,它允许您获取上次迭代的布尔值$loop->last或获取当前迭代索引$loop->iteration、记录总数$loop->count和更多循环变量

@foreach ($posts as $post)

    {{ $post->title }} ({{ $loop->iteration }} of {{ $loop->count }})   

@endforeach
Run Code Online (Sandbox Code Playgroud)