[英]Laravel storing only the last element of the array in the DB table (foreach loop)
[英]Laravel - Get the Last Element of @foreach
基本上,我將一個變量員工從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
從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也存在。
這是你可能想要的代碼:
@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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.