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
フラグは何かの条件に基づいてオン・オフを設定したいときに、使えます。
わりと便利なので、試してみてくださいね。