Цикл @foreach Blade
В данном уроке мы с вами разберем директиву @foreach
шаблонизатора Blade, представляющую собой цикл для перебора массива.
Рассмотрим работу данной директивы на практическом примере. Пусть из действия в представление передается какой-то массив $arr
.
Переберем этот массив циклом и выведем его элементы на экран:
@foreach ($arr as $key => $elem)
{{ $elem }}
@endforeach
Давайте выведем каждый элемент массива в отдельном абзаце:
@foreach ($arr as $key => $elem)
<p>{{ $elem }}</p>
@endforeach
Давайте выведем элементы нашего массива в виде списка ul
:
<ul>
@foreach ($arr as $key => $elem)
<li>{{ $elem }}</li>
@endforeach
</ul>
Ключи массива
Можно также получить в отдельную переменную ключи массива, аналогично циклу foreach
в PHP:
@foreach ($arr as $key => $elem)
{{ $key }} {{ $elem }}
@endforeach
Часто бывает так, что хотелось бы вывести рядом с элементами массива их порядковые номера, но не очень удобно то, что нумерация в массивах начинается с 0. Для решения проблемы можно просто прибавлять единицу на выводе ключа:
@foreach ($arr as $key => $elem)
{{ $key + 1 }} {{ $elem }}
@endforeach
Условия и циклы
Директиву @foreach
можно комбинировать с директивой @if
. Выведем, например только положительные элементы массива:
<ul>
@foreach ($arr as $elem)
@if ($elem > 0)
<li>{{ $elem }}</li>
@endif
@endforeach
</ul>
А теперь, наоборот выведем список только в том случае, если количество элементов в массиве больше нуля:
@if (count($arr) > 0)
<ul>
@foreach ($arr as $elem)
<li>{{ $elem }}</li>
@endforeach
</ul>
@endif
Переменная $loop
При переборе массива с помощью foreach
внутри цикла доступна специальная переменная $loop
. Она обеспечивает доступ к некоторой полезной информации об итерациях цикла.
@foreach ($arr as $elem)
{{ $elem }}
@endforeach
Давайте на примере этого массива изучим возможности переменной $loop
:
Граничные итерации
Можно также узнать первая это или последняя итерация цикла:
@foreach ($arr as $elem)
@if ($loop->first)
первая итерация
@endif
@if ($loop->last)
последняя итерация
@endif
{{ $elem }}
@endforeach
Четность
Можно также узнать четность итерации цикла:
@foreach ($arr as $elem)
@if ($loop->odd)
нечетная итерация
@endif
@if ($loop->even)
четная итерация
@endif
{{ $elem }}
@endforeach
Итерации
Можно узнать индекс текущей итерации (начинается с нуля):
@foreach ($arr as $elem)
{{ $loop->index }}
{{ $elem }}
@endforeach
Можно узнать номер текущей итерации (начинается с единицы):
@foreach ($arr as $elem)
{{ $loop->iteration }}
{{ $elem }}
@endforeach
Можно узнать, сколько итераций осталось:
@foreach ($arr as $elem)
{{ $loop->remaining }}
{{ $elem }}
@endforeach
Количество элементов
Можно узнать количество элементов в перебираемом массиве:
@foreach ($arr as $elem)
{{ $loop->count }}
{{ $elem }}
@endforeach