簡體   English   中英

Laravel - 獲取@foreach的最后元素

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM