こんにちは、さるまりんです。
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
で繰り返ししている配列の要素数が取れたりします。
便利ですね〜。知っているとコードがシンプルになリました。
積極的に使っていきたいと思います。
読んでくださってありがとうございました。
それではまた!