[Laravel] Blade @foreach で使えるループ変数 $loop について

2018年9月6日ITLaravel, PHP

こんにちは、ハラダ(@nobuhiro_harada)です。

「for はなくなっていってるから、foreach で書けるようになった方がいい」

とは、以前の現場の先輩のお言葉なのですが、そうはいっても

for($i = 0; $i<$items; $i++)

と、書いた際、ループ変数 $i は結構使える、と思うのですが

Laravel の Blade は $loop ループ変数が用意されていて、foreach 内で使えるようですね。

@php
$items = [1,2,3,4,5,6,7,8,9,10];
@endphp
@foreach ($items as $item)
    @if ($loop->first)
        <p>$loop: 最初</p>
    @endif
        <p>$loop:index{{ $loop->index }}</p>
        <p>$loop:残り{{ $loop->remaining }}</p>
        <p>$loop:ネスト{{ $loop->depth }}</p>
    @if ($loop->last)
        <p>$loop: 最後</p>
    @endif
@endforeach

こんな感じになります。

laravel-blade-foreach-loop.png

for を使えばええやん、と思いますが、for を使わず、foreach を使うことでシンプルにコーディングして、体面を保ちたい。でも、ループ変数を定義してたら、かっこ悪い

そんな僕のような悩みを抱えるプログラマーのために Laravel 開発者有志は $loop 変数 を実装してくれたのかな、と愛を感じた今日この頃でした。

Bladeテンプレート

ひとこと

上記のサンプルで $items に配列ではなく、数値を入れてしまってて、エラーになり、「そ、そんなバカな、、、」と、地味にハマりました。サンプル書いて、ハマってどうすんねんw

スポンサーリンク

Posted by nobuhiro harada