PHPフレームワーク「Laravel」ディレクティブ-繰り返し処理(ループ処理)-
前回は条件分岐のディレクティブの解説を行いました。
今回は「繰り返し処理(ループ処理)」のディレクティブについて解説します。
ディレクティブとは?
Laravelでのディレクティブとは「@〜」で記述し指定の処理を記述する方法です。
Laravelでは主に「分岐処理を行うディレクティブ」「繰り返しのディレクティブ」「レイアウト作成用ディレクティブ」などがあります。
今回は「繰り返し処理(ループ処理)」のディレクティブについての解説となります。
PHPの「繰り返し処理(ループ処理)」について詳しくは「PHP 繰り返し処理(ループ処理)」を参照してください。
@for
PHPでのfor構文に相当するのが@forとなります。
@forは「@for( 初期化 ; 条件 ; 後処理 )」で記述し、@endforで終了となります。
下記は10回ループする処理記述したコードとなります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <html> <head> <title>ディレクティブ ループ / Blade</title> </head> <body> <h1>ディレクティブ ループ</h1> @for( $i = 1; $i <= 10; $i++ ) <p>{{$i}}回目のループ</p> @endfor </body> </html> |
結果が下記のようになります。ループ処理が10回行われていることを確認できます。
@foreach
PHPでのforeach構文に相当するのが@foreachとなります。
@foreachは「@foreach( 配列 as 変数 )」で記述し、@endforeachで終了となります。
以下は@phpで配列を定義し、@foreachで順に表示するコードです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <html> <head> <title>ディレクティブ ループ / Blade</title> </head> <body> <h1>ディレクティブ ループ</h1> @php $arr = ['みかん','りんご','バナナ','パイナップル','いちご']; @endphp @foreach( $arr as $value ) <p>{{$value}}</p> @endforeach </body> </html> |
結果が下記のようになります。定義した配列の内容だけループ処理が繰り返されていることがわかります。
index番号や配列の添字を取得し表示する
@foreachではPHPのforeach構文と同様に、配列のindex番号や添字を取得し表示することも可能です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <html> <head> <title>ディレクティブ ループ / Blade</title> </head> <body> <h1>ディレクティブ ループ</h1> @php $arr = ['みかん','りんご','バナナ','パイナップル','いちご']; @endphp @foreach( $arr as $key => $value ) <p>{{$key}}:{{$value}}</p> @endforeach </body> </html> |
結果は下記のようになります。index番号が頭に表示されています。
※配列のindex番号は0から始まるので最初の番号が0と表示されています。
@while
PHPでのwhile構文に相当するのが@whileとなります。
@whileは「@while( 条件 )」で記述し、@endwhileで終了となります。
以下は$numが0(false)になるまで繰り返すコードとなります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <html> <head> <title>ディレクティブ ループ / Blade</title> </head> <body> <h1>ディレクティブ ループ</h1> @php $num = 10; @endphp @while( $num ) <p>$num => {{$num}}</p> @php $num--; @endphp @endwhile </body> </html> |
結果は下記のようになります。$numが0の場合はループ処理を終えていることがわかります。
@break、@continue
Lravelの繰り返し処理にもPHPと同様に「break」と「continue」が用意されています。
@break | @breakが呼び出されると、その時点で繰り返しディレクティブをが中断されます。 |
@continue | @continueが呼び出されると、以降の処理は無視され次の繰り返し処理に進みます。 |
@break
以下は、@forで利用したコードを流用し、@ifで$numが5になった場合、@breakを出力するコードに書き換えました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <html> <head> <title>ディレクティブ ループ / Blade</title> </head> <body> <h1>ディレクティブ ループ</h1> @for( $i = 1; $i <= 10; $i++ ) @if( $i == 5 ) @break @endif <p>{{$i}}回目のループ</p> @endfor </body> </html> |
$iが5になった時点でループ処理が終了していることがわかります。
@continue
以下は、@forで利用したコードを流用し、@ifで$iが奇数の場合、@continueを出力するコードに書き換えました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <html> <head> <title>ディレクティブ ループ / Blade</title> </head> <body> <h1>ディレクティブ ループ</h1> @for( $i = 1; $i <= 10; $i++ ) @if( $i % 2 ) @continue @endif <p>{{$i}}回目のループ</p> @endfor </body> </html> |
奇数である1回目、3回目、5回目、7回目、9回目が出力されていないことが確認できます。
ループ処理のディレクティブはPHPと似ている
@for、@foreach、@whileの解説をしましたが、PHPの構文とそれほど変わらないので、PHPを理解していれば利用にはそれほど戸惑わない内容となっています。
S.E->お勧め記事;
- PHPフレームワーク「Laravel」ディレクティブ-分岐処理(条件分岐)-
- PHPフレームワーク「Laravel」ルーティング Route::get()
- PHPフレームワーク「Laravel」Bladeテンプレートを利用する
- XSERVERにSSHを利用してLaravel環境を構築する
- PHPフレームワーク「Laravel」MVCとコントローラを利用する
- macOS Monterey にアップデート後、composerやhomebrewでenv: php: No such file or directoryが出る
- PHP フレームワーク Laravel ディレクティブ – ループ変数 $loop –
- Laravel開発環境をgitでコミットする際の注意点
- PHPフレームワーク「Laravel」PHPテンプレートを利用する