こんにちは、さるまりんです。
PHPのフレームワークLaravelのbladeテンプレートの機能をメモしておきます。
@foreachのループの中で、今、何回目なのかで処理を分岐したい。
そんな時に便利なのが$loop変数です。
こんな感じです。
@foreach ($items as $item)
@if ($loop->index == 0)
@endif
@endforeach
これで繰り返しの最初の一回だけの処理を指定できます。
$loop->indexは0始まりです。
$loopはLavael 5.3から追加されたみたいなので、それ以前のものを使っているときはこんな感じです。
<?php $index=0; ?>
@foreach ($items as $item)
@if ($index == 0)
@endif
<?php $index++; ?>
@endforeach
PHPをベタで書くのちょっと抵抗あります。
この$loop変数は他にもこんな使い方ができます。
$loop->indexは0始まりですが、$loop->iterationだと1から始まります。
これだと順番を表示する時 $loop->index + 1とかする必要がなく、$loop->iterationそのまま表示でOKです。
こんな風に使えます。
@foreach ($items as $item)
{{ $loop->iteration }}. {{ $item->name }}
@endforeach
上の例で繰り返しの最初の一回だけ処理をするというのをやりました。
最初と最後に関しては$loop->first、$loop->lastを使って調べることもできます。
こんな感じです。
@foreach ($items as $item)
// 最初?
@if ($loop->first)
@endif
// 最後?
@if ($loop->last)
@endif
@endforeach
他にも$loop->remainingで繰り返しの残りの数を取れたり、$loop->countで繰り返ししている配列の要素数が取れたりします。
便利ですね〜。知っているとコードがシンプルになリました。
積極的に使っていきたいと思います。
読んでくださってありがとうございました。
それではまた!