この記事ではLaravelのforeach文で使える$loopについての紹介記事です。
foreach文の中で、「ループの最初」や「ループの◯番目」に特定の処理が必要な場合があると思います。
そんな時、ループ変数である$loopを使うと簡単にその処理を書くことができます。
無駄なコードを書く必要がなくなり可読性も上がると思うのでぜひ参考にしてみてください!
この記事を読むメリット
- Laravelのforeach文の中での$loopの使い方が理解できる
- ループ変数$loopで使える便利なプロパティが理解できる
繰り返し処理の中で使えるループ関数「$loop」
「$loop」は、foreachなどの繰り返し処理の中で使えるループ関数です。
後ほど詳しく紹介しますが、繰り返しの中で特定の条件を入れることができます。
@foreach ($posts as $key => $value)
@if ($key === 1)
@endif
@endforeach
このように$keyと$valueを使えばループの順番などを指定できますが、$loopを使うとさらに簡単に書くことができます。
ループ変数$loopの使い方
ここから実際のコードを交えて$loopの使い方を紹介します。
繰り返し回数で使える$loop
それではここから$loopの使い方を紹介していきます。
まずは繰り返し処理の回数を指定する使い方です。
@foreach ($posts as $post)
@if ($loop->first)
// 最初の繰り返し
@endif
@if ($loop->index === 3)
// 2回目の繰り返し(繰り返しのインデックス取得)
@endif
@if ($loop->iteration === 2)
// 2回目の繰り返し(現在の繰り返し数取得)
@endif
@if ($loop->last)
// 最後の繰り返し
@endif
@if ($loop->remaining === 2)
// 最後から番目の繰り返し(残りの繰り返し数が取れる)
@endif
@endforeach
このようにかなり柔軟にループの順番を指定することができます。
その他の$loopのプロパティ
そのほかのプロパティもまとめて紹介します。
@foreach ($posts as $post)
echo ($loop->count) // 反復している配列の総アイテム数
echo ($loop->depth) // 現在のループのネストレベル
@if ($loop->even)
// 今回が偶数回目の繰り返しだった時の処理
@endif
@if ($loop->odd)
// 今回が奇数回目の繰り返しだった時の処理
@endif
@foreach ($posts->comments as $comment)
@if ($loop->parent->first)
// 親のループの最初の繰り返し
echo ($loop->iteration) // 1
@endif
@endforeach
@endforeach
上のコードのように、$loopを使って繰り返しアイテムの総数やループのネストレベル、奇数偶数の判断までできます。
今回紹介した$loopのプロパティ一覧は以下になります。
プロパティ | 概要 |
---|---|
$loop->first | ループの最初の繰り返しかどうか |
$loop->index | 現在の繰り返しのインデックス(初期値0) |
$loop->iteration | 現在の繰り返しの数(初期値1) |
$loop->last | ループの最後の繰り返しかどうか |
$loop->remaining | ループ残りの繰り返し回数 |
$loop->count | 反復している配列の総アイテム数 |
$loo->depth | 現在のループのネストレベル |
$loo->even | 今回が偶数回目の繰り返しかどうか |
$loop->odd | 今回が奇数回目の繰り返しかどうか |
$loop->parent | ループがネストしている場合、親のループ変数 |
$loop->indexと$loop->iterationは初期値が異なるので使用する際はそこに注意して使用する必要があります。
初期値を理解しておかないと、思っていた条件に当てはまらない場合が出る可能性があります。
$loop変数を使って繰り返しの中の条件にアクセスしよう
いかがだったでしょうか。
$loopを使うと、繰り返し処理中の様々な条件に簡単にアクセスすることができます。
Laravelが用意している便利なループ変数なので$foreachで必要に応じて使用できると良いかと思います。