基本上,我将变量员工从 StaticPagesController 传递到 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
答案 0 :(得分:5)
自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->首先也存在。
答案 1 :(得分: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()
相同。
答案 2 :(得分:1)
根据我的理解,代码的逻辑是将每个元素的值与最后一个元素的值进行比较,以确定它是否是最后一个元素并避免使用尾随逗号。
如果有两个人具有完全相同的细节,一个恰好是最后一个,你可能会有一个部分列表。
我建议您使用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