技術はあとからついてくる。

技術はあとからついてくる。

就活開始の半年前にエンジニアに目覚めた人

Laravelの$loop変数を使えば$key=>$valueを書かなくてもインデックスが取れる

laravel

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

まとめ

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

参考