In blade template i use last() method to find last iteration of foreach loop:
@foreach ($colors as $k => $v) <option value={!! $v->id !!} {{ $colors->last()->id==$v->id ? 'selected':'' }} > {!! $v->name !!} </option> @endforeach
Is it ok? Perhaps there is a Laravel-style way to do the same?
Method 1: It is the naive method inside foreach loop to find iteration. Use a counter variable and check when the counter value is zero then it is the first iteration and when the counter value is length-1 then it is the last iteration.
Laravel blade has a foreach directive that we can use the same way as we use the foreach loop in PHP. @foreach directive is more powerful than a normal foreach loop because of the $loop variable that is available inside every $foreach loop.
As for Laravel 5.3+, you can use the $loop variable
$loop->last @foreach ($colors as $k => $v) @if($loop->last) // at last loop, code here @endif @endforeach
What you do is absolutely fine if you want to obtain instance of the last item in the collection.
Additionally, in Laravel 5.3 you can use $loop
variable, which allows you to get boolean for last iteration $loop->last
or to obtain current iteration index $loop->iteration
, total number of records $loop->count
and a few more The Loop Variable
@foreach ($posts as $post) {{ $post->title }} ({{ $loop->iteration }} of {{ $loop->count }}) @endforeach
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With