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 | ループがネストしている場合、親のループ変数 |
まとめ
- 統一されたものを使えば書いた人による差分が出ないので、積極的に使いたい。