2016-07-23 36 views
3

基本上,我传递变量员工StaticPagesControllerabout.blade.php 当通过@foreach循环,我想代码知道它是否是最后一个元素,因此它将输出员工的姓名,而不需要逗号。 这些都不会起作用。Laravel - 获取@foreach的最后一个元素

1.

@foreach($employees as $employee) 
    @if($employee == end($employees)) 
     {{ $employee->first_name }} {{ $employee->last_name }} 
    @else 
     {{ $employee->first_name }} {{ $employee->last_name }}, 
    @endif 
@endforeach 

enter code here 

2.

@foreach($employees as $employee) 
    @if($employees->last()) 
     {{ $employee->first_name }} {{ $employee->last_name }} 
    @else 
     {{ $employee->first_name }} {{ $employee->last_name }}, 
    @endif 
@endforeach 

回答

5

因为Laravel 5.3很简单:你必须在所有@foreach一个$循环变量:

https://laravel.com/docs/5.3/blade#the-loop-variable

@foreach($employees as $employee) 

    @if ($loop->last) 
     // This is the last iteration. 
     {{ $employee->first_name }} {{ $employee->last_name }} 
    @else 
     {{ $employee->first_name }} {{ $employee->last_name }}, 
    @endif 

@endforeach 

的最短替代可以是:

@foreach($employees as $employee) 
    {{ $employee->first_name }} {{ $employee->last_name }}{{ ($loop->last ? '' : ',') }} 
@endforeach 

请注意,$ loop-> first也存在。

+0

好吧,它的工作原理感谢 –

+0

第二个是使用非常短的代码 –

3

这里是你可能想代码:

@foreach($employees as $employee) 
    @if($employees->last() === $employee) 
     {{ $employee->first_name }} {{ $employee->last_name }} 
    @else 
     {{ $employee->first_name }} {{ $employee->last_name }}, 
    @endif 
@endforeach 

所以在这里我的last()员工比较当前$employee。当它到达最后的$employee时,它将与last()相同。

+0

这个窍门! – 27a

0

从我的理解,你的代码的逻辑是比较每个元素的值和最后一个元素的值,以确定它是否是最后一个元素,并避免尾随逗号。

如果有两个人具有完全相同的细节,则恰好是最后一个,您可能会呈现部分列表。

我建议你使用循环而不是foreach,并比较元素索引而不是值。代码: -

@for ($i = 0; $i < count($employees); $i++) 
    @if ($i + 1 < count($employees)) 
     {{ $employees[$i]->first_name }} {{ $employees[$i]->last_name }}, 
    @else 
     {{ $employees[$i]->first_name }} {{ $employees[$i]->last_name }} 
    @endif 
@endfor 
相关问题