Help us understand the problem. What is going on with this article?

【Laravel】foreach文における$loop変数に感動した

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 ループがネストしている場合、親のループ変数

まとめ

  • 統一されたものを使えば書いた人による差分が出ないので、積極的に使いたい。

参考

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away