Переменная $loop в Blade в Laravel
При переборе массива с помощью @foreach
внутри цикла доступна специальная переменная
$loop. Она обеспечивает доступ к некоторой
полезной информации об итерациях цикла.
Пусть из действия контроллера в представление передается следующее:
<?php
return view('post.show', [
'arr' => ['a', 'b', 'c'],
]);
?>
Давайте на примере этого массива
изучим возможности переменной $loop.
Граничные итерации
Можно узнать, первая это или последняя итерация цикла:
@foreach ($arr as $elem)
@if ($loop->first)
first iteration
@endif
@if ($loop->last)
last iteration
@endif
{{ $elem }}
@endforeach
Четность
Можно также узнать четность итерации цикла:
@foreach ($arr as $elem)
@if ($loop->odd)
odd iteration
@endif
@if ($loop->even)
even iteration
@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
Практические задачи
Пусть из действия контроллера в представление передается следующее:
<?php
return view('post.show', [
'arr' => ['a', 'b', 'c', 'd'],
]);
?>
Выведите элементы в виде списка ul.
Перед значением элемента выводите
порядковый номер итерации, начиная с 0.
Модифицируйте предыдущую задачу так, чтобы
порядковый номер итерации начинался с 1.
Модифицируйте предыдущую задачу так, чтобы
для первой li добавлялся CSS класс
first, а для последней - класс last.
Пусть из действия контроллера в представление передается следующее:
<?php
return view('post.show', [
'arr' => [1, 2, 3, 4, 5],
]);
?>
Выведите каждый элемент в теге b,
а три последних элемента массива - в теге
i.