Laravel - 获取@foreach 的最后一个元素

Laravel - Get the Last Element of @foreach

基本上,我将变量 employeesStaticPagesController 传递到 about.blade.php 当遍历 @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

这是您可能需要的代码:

@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()一样了。

据我了解,您的代码逻辑是将每个元素的值与最后一个元素的值进行比较,以确定它是否是最后一个元素并避免尾随逗号。

如果有 2 个人具有完全相同的详细信息,并且恰好是最后一个,您可能会呈现部分列表。

我建议您使用 for 循环而不是 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

从 Laravel 5.3 开始更容易:你在所有 @foreach 中都有一个 $loop 变量:

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 也存在。