Laravelの$loop変数を使えば$key=>$valueを書かなくてもインデックスが取れる
Laravel、便利なプロパティが多くとてもGoodですね。
開発現場では頻出なforeach文に関して便利なプロパティを知ったので
こちらに書き残しておきます!
foreach文とかで繰り返しの「ループの最初」や「ループの5回目で」という処理を書くことがある
@foreach ($users as $key => $value) { @if ($key === 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 | ループがネストしている場合、親のループ変数 |
まとめ
- 統一されたものを使えば書いた人による差分が出ないので、積極的に使いたい。