Laravel ビューでforeachを使う時に条件により処理を変える方法【フラグ処理】

Laravel・PHP豆知識・トラブル対策

foreachの中で、値が見つかったらフラグを立てる処理を解説します。

フラグを設定すれば、【ON】【OFF】を切り替えられます。

ビューファイル上で、条件によって異なる処理を入れたい時などに非常に便利。

If文だけでは処理しにくい場合などに、参考にしてください。

Laravel:foreachループで値が見つかったらフラグ処理を行う

たとえば、次のようなコードを記述したいとします。

【実行したい処理】

  • ユーザーのテスト結果を表示させる
  • テスト結果は複数ある
  • テストが終了していないユーザーには【テスト開始】ボタンを表示する

if と foreachを使ってコードを書いていきます。

   @php

      $f_found=false;

   @endphp

@foreach($tests->result as $result)
<a href=”/testresult”>{{$result->name }}</a>

   @php

      $f_found=true;

   @endphp

@break

@endforeach

@if($f_found==false)

★見つからなかったときの処理を書く★

<a href=”/teststart”>【テスト開始】</a>

@endif

コードの意味

$f_found 変数に false を代入しておく

foreachを使って、テスト結果の要素をひとつずつ取り出す

{{$result->name }}を表示する

このときに $f_found 変数に true を代入する

最初の1回だけ{{$result->name }}を表示したら、foreachを抜ける

もし$f_found変数がfalseの場合は、【テスト開始】リンクを表示する

これで、目的に合ったコードになります。

テストが終わっていれば、最初のテスト結果だけ表示されます。

もしまだテストが終わっていない場合には、【テスト開始】リンクが表示されます。

今回のコードのポイントは、赤色部分です。

   @php

      $f_found=false;

   @endphp

   @php

      $f_found=true;

   @endphp

このPHP文を入れることで、フラグを設定しています。

このあと、フラグを立てるときは【TRUE】、フラグを下げるときは【FALSE】をIF文に設定します。

今回は、下記のようにOFFを使って処理をしました。

@if($f_found==false)

<a href=”/teststart”>【テスト開始】</a>

@endif

フラグは何かの条件に基づいてオン・オフを設定したいときに、使えます。

わりと便利なので、試してみてくださいね。

Laravel・PHP豆知識・トラブル対策

【Laravelの教科書・プレゼント】

Junko
Laravelの使い方を覚えたい!と思ったら、ぜひ、役立ててほしいです。 基礎編は無料でプレゼント中です♪
ひつじプログラマ
会員制サイトをいちから作っていくよ。ボタンをクリックして詳細を見てね。
Laravelの教科書の詳細を見る

最新のLaravel11版テキストに加え、Laravel8版・Laravel9版・Laravel10版もご用意しています♪

【無料プレゼント】

「LaravelでWebアプリをいちから作れるようになりたい!」

そんなLaravel初心者のあなたへ【Laravelの教科書】基礎編プレゼント中! 会員制フォーラムサイトを学習しながら作れます。

詳細はこちらをクリック

最新のLaravel11版テキストに加え、Laravel8版・Laravel9版・Laravel10版もご用意しています♪

Laravelの本を書きました。


ひつじが目印♪
クリックするとamazonページへ。

Laravelの使い方を分かりやすく解説した書籍を出版しました。書店やAmazon等のオンラインショップにて販売中です。
Laravel10対応。Laravel11サポートガイドもご用意しています。詳しくは下記ボタンをクリック♪

書籍の詳細を見てみる

Laravelの本を書きました。


ひつじが目印♪
クリックするとamazonページへ。

最新版Laravel11用のサポートガイドご用意しています。

Laravelの使い方を分かりやすく解説した書籍を出版しました。書店やAmazon等のオンラインショップにて販売中です。

書籍の詳細を見てみる
Twitter始めました。
40代からプログラミング!
タイトルとURLをコピーしました