Директива foreach
Директива foreach в Blade выполняет перебор элементов массива или коллекции.
Она принимает два параметра: перебираемую переменную и переменную для текущего элемента.
Внутри цикла доступна переменная $loop, которая содержит информацию о текущей итерации.
Синтаксис
@foreach ($array as $element)
{{ $element }}
@endforeach
Пример
Передадим массив чисел в шаблон и выведем каждый элемент:
<?php
namespace AppHttpControllers;
class ArticleController extends Controller
{
public function index()
{
$res = [1, 2, 3, 4, 5];
return view('index', ['res' => $res]);
}
}
?>
<ul>
@foreach ($res as $elem)
<li>{{ $elem }}</li>
@endforeach
</ul>
Результат выполнения кода:
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ul>
Пример
Используем переменную $loop для вывода номера итерации:
<?php
namespace AppHttpControllers;
class ArticleController extends Controller
{
public function index()
{
$res = ['a', 'b', 'c', 'd', 'e'];
return view('index', ['res' => $res]);
}
}
?>
@foreach ($res as $elem)
<p>{{ $loop->iteration }}. {{ $elem }}</p>
@endforeach
Результат выполнения кода:
<p>1. a</p>
<p>2. b</p>
<p>3. c</p>
<p>4. d</p>
<p>5. e</p>
Пример
Добавим условие для вывода только чётных чисел:
<?php
namespace AppHttpControllers;
class ArticleController extends Controller
{
public function index()
{
$res = [1, 2, 3, 4, 5, 6];
return view('index', ['res' => $res]);
}
}
?>
@foreach ($res as $elem)
@if ($elem % 2 == 0)
<p>{{ $elem }}</p>
@endif
@endforeach
Результат выполнения кода:
<p>2</p>
<p>4</p>
<p>6</p>
Пример
Переберём коллекцию пользователей и выведем имена с их должностями:
<?php
namespace AppHttpControllers;
use AppModelsUser;
class ArticleController extends Controller
{
public function index()
{
$res = User::all();
return view('index', ['res' => $res]);
}
}
?>
@foreach ($res as $user)
<div>
<h3>{{ $user->name }}</h3>
<p>{{ $user->email }}</p>
</div>
@endforeach
Результат выполнения кода:
<div>
<h3>John Doe</h3>
<p>john@example.com</p>
</div>
<div>
<h3>Jane Smith</h3>
<p>jane@example.com</p>
</div>
Пример
Используем директиву forelse для обработки пустого массива:
<?php
namespace AppHttpControllers;
class ArticleController extends Controller
{
public function index()
{
$res = [];
return view('index', ['res' => $res]);
}
}
?>
@forelse ($res as $elem)
<p>{{ $elem }}</p>
@empty
<p>No elements found</p>
@endforelse
Результат выполнения кода:
<p>No elements found</p>