質問: Laravel初学者です。 この「ループ変数($loop)」とそのプロパティ(->firstとか->lastとか)が使えるのは、**@foreachディレクティブと@forelseディレクティブ限定という理解で良いのでしょうか?** Laravelのループ変数「$loop」について、 公式ドキュメント「繰り返し」の部分 には、 > > Tip!! ループするときは、ループ変数を使用して、ループの最初の反復か最後の反復かなど、ループに関する重要な情報を取得できます。 > > > とあります。 @forディレクティブや@whileディレクティブでの繰り返しで「$loop」を使おうとするとエラーになるので質問しました。 例えば・・・ ``` @for($i=1; $i<10; $i++) @if($loop->first) 表示するよ @endif @endfor ``` ⇒$loop is undefinedのエラーが出力。 使えない理由というと、大げさだと思いますが、その辺りも補足していただけると嬉しいです。 [追記] コメントにも記載しましたが、質問時点では、このような認識でした。 1ドキュメントの「ループするときは、ループ変数を使用して、・・・・ループに関する重要な情報を取得できます」 2ということは@for、@while、@foreach、@forelseの「全てのループ」でループ変数$loopが使えるということか! ←このように認識したのがダメだった 3@for、@whileではエラー($loopなんてない)になった。@foreach、@forelseでは使えた。 4ん?@foreach、@forelse限定なの? ループで使えると書いてあるのに?! 5質問してみようとなった。 結果、このドキュメントでいう「ループ」とは、forやwhileなどのループを含んだ意味ではなく、**@foreachと@forelseのループだけ使用できる実装がされているということ(サンプルはforeachしか示されていないから)**なんですね。 回答・アドバイスをいただいた皆様、レベルの低い話に長々とお付き合いいただきありがとうございました。 同じように思われた方が日本のどこかにおられて、この質問が役に立てば幸いです。
回答: > > 使えない理由というと、大げさだと思いますが、その辺りも補足していただけると嬉しいです。 > > > `$loop`は`forelse`と`foreach`にしか用意されていないから他のループ処理では使えないだけです。 と言っても今サッとLaravel8.xのソース見ただけなので、他のバージョンがどうかは知りません。