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

Find last iteration of foreach loop in laravel blade

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

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

可以吗?也许有一种 Laravel-style 方法可以做到这一点?

不知道最后一个方法是否有效,如果无效,试试这个:

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

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

@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

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

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

@foreach ($posts as $post)

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

@endforeach

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

$loop->last

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