loop変数はLaravel5.3から追加された変数。
foreach文とかで繰り返しの「ループの最初」や「ループの5回目で」という処理を書くことがあるが...
@foreach ($users as $key => $value) {
@if ($key === 1)
// ループの1回目だけの処理
@endif
}
ループ変数
foreach文の中で$loop変数を使うと、$key=>$valueにしなくてもインデックスを取ることができる。その他いろんなプロパティも持つ。
繰り返しの回数に関するプロパティ
@foreach ($users as $user)
// 初回ループ
@if ($loop->first)
// 最初の繰り返し
@endif
@if ($loop->index === 0)
// 最初の繰り返し(インデックスが取れる)
@endif
@if ($loop->iteration === 1)
// 最初の繰り返し(現在の繰り返し数が取れる)
@endif
// 最後のループ
@if ($loop->last)
// 最後の繰り返し
@endif
@if ($loop->remaining === 1)
// 最後の繰り返し (残りの繰り返し数が取れる)
@endif
@endforeach
その他のプロパティ
@foreach
// 配列の総アイテム数
@if ($loop->count === 10)
// 配列の総アイテム数が10
@endif
// 現在のループのネストレベル
@if ($loop->depth === 1)
// ネストレベル1
@endif
// ループがネストしてる場合に、親のループ変数を使いたい場合
@foreach ($user->posts as $post)
@if ($loop->parent->first)
// 親のループの最初の繰り返し
echo ($loop->iteration) // 1
@endif
@endforeach
@endforeach
$loop変数のプロパティ一覧
| プロパティ | 説明 |
|---|---|
| $loop->index | 現在のループのインデックス(初期値0) |
| $loop->iteration | 現在の繰り返し数(初期値1) |
| $loop->remaining | 繰り返しの残り数 |
| $loop->count | 繰り返し中の配列の総アイテム数 |
| $loop->first | ループの最初の繰り返しか |
| $loop->last | ループの最後の繰り返しか |
| $loop->depth | 現在のループのネストレベル |
| $loop->parent | ループがネストしている場合、親のループ変数 |
まとめ
- 統一されたものを使えば書いた人による差分が出ないので、積極的に使いたい。