2016-07-23 15 views
3

Grundsätzlich bin ich eine Variable Mitarbeiter vom StaticPagesController vorbei zu about.blade.php Wenn durch Looping @foreach, möchte ich den Code wissen, ob es das letzte Element ist, so wird es den Namen des Mitarbeiters ohne Komma ausgeben. Keine von beiden würde funktionieren.Laravel - Holen Sie sich das letzte Element von @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 

Antwort

5

Es ist einfacher, da Laravel 5.3: Sie einen $ Schleifenvariable in allen @foreach haben:

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 

Eine kürzeste Alternative kann sein:

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

Beachten Sie, dass $ loop-> zuerst auch existiert.

+0

ok es funktioniert dank –

+0

zweitens verwendet sehr kurzen Code –

3

Hier ist der Code, den Sie wahrscheinlich wollen:

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

Also bin ich hier einen Vergleich der last() Mitarbeiter auf den aktuellen $employee. Wenn es das letzte $employee erreicht, wird es dasselbe wie last() sein.

+0

Dies hat den Trick! – 27a

0

Aus meinem Verständnis vergleicht die Logik Ihres Codes den Wert jedes Elements mit dem Wert des letzten Elements, um festzustellen, ob es das letzte Element ist, und vermeiden Sie das nachgestellte Komma.

Wenn es zwei Personen gibt, die genau die gleichen Details haben, ist es möglich, dass Sie eine letzte Liste haben.

Ich schlage vor, Sie anstelle von foreach for-Schleife zu verwenden und Elementindex anstelle von Wert zu vergleichen. Code: -

@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