Переменная $loop в Blade в Laravel

При переборе массива с помощью foreach внутри цикла доступна специальная переменная $loop. Она обеспечивает доступ к некоторой полезной информации об итерациях цикла.

Посмотрим на примерах. Пусть мы перебираем циклом некоторый массив:

blade@foreach ($arr as $elem)
  {{ $elem }}
@endforeach

Давайте на примере этого массива изучим возможности переменной $loop.

Граничные итерации

Можно также узнать первая это или последняя итерация цикла:

blade@foreach ($arr as $elem)
  @if ($loop->first)
    первая итерация
  @endif
  
  @if ($loop->last)
    последняя итерация
  @endif
  
  {{ $elem }}
@endforeach

Четность

Можно также узнать четность итерации цикла:

blade@foreach ($arr as $elem)
  @if ($loop->odd)
    нечетная итерация
  @endif
  
  @if ($loop->even)
    четная итерация
  @endif
    
  {{ $elem }}
@endforeach

Итерации

Можно узнать индекс текущей итерации (начинается с нуля):

blade@foreach ($arr as $elem)
  {{ $loop->index }}
  {{ $elem }}
@endforeach

Можно узнать номер текущей итерации (начинается с единицы):

blade@foreach ($arr as $elem)
  {{ $loop->iteration }}
  {{ $elem }}
@endforeach

Можно узнать, сколько итераций осталось:

blade@foreach ($arr as $elem)
  {{ $loop->remaining }}
  {{ $elem }}
@endforeach

Количество элементов

Можно узнать количество элементов в перебираемом массиве:

blade@foreach ($arr as $elem)
  {{ $loop->count }}
  {{ $elem }}
@endforeach

Практические задачи

Задание 1

Из действия в представление передается массив со строками. Выведите элементы этого массива в виде списка ul. Сделайте так, чтобы перед значением элемента, выводился еще и порядковый номер итерации, начиная с 0.

Задание 2

Модифицируйте предыдущую задачу так, чтобы порядковый номер итерации начинался с 1.

Задание 3

Модифицируйте предыдущую задачу так, чтобы для первой li добавлялся CSS класс first, а для последней - класс last.

Задание 4

Из действия в представление передается массив с числами. Выведите каждый элемент этого массива в своем теге b, а три последних элемента массива - в теге i.