4

foreach 内で一度コンテンツをエコーし​​ようとしています。現時点では、ユーザーがフォームに入力すると、スキップされたすべてのレコードに対してメッセージが表示されます。35 件のレコードがスキップされた場合、foreach により 35 件のメッセージが返されます。これを回避し、結果ページ全体で 1 つのエコーのみを表示できるようにしたいと考えています。これどうやってするの?foreach の外でこれを行う必要があるかもしれないと思いますが、foreach から取り出す方法がわかりません。

foreach($allcourses as $course)
{
    if(Auth::LoggedIn())
    {
       if(Auth::$userinfo->rank == 'Student')
       {
           if($course->aircraft == '1')
           {
               echo '<div class="msg-red">Some lessons could not be found, because you may not be entitled to view/book them at this stage of your course.</div><br/>';
               continue; 
           }
           if($course->aircraft == '2')
           {
               echo '<div class="msg-red">Some lessons could not be found, because you may not be entitled to view/book them at this stage of your course.</div><br/>';
               continue; 
           }
        }
    }
}
4

7 に答える 7

3

この場合、単純なフラグ変数を設定できます。

$warningEmitted = false;

次に、警告を発する前のループで:

if(!$warningEmitted) {
    // echo warning here. 
    $warningEmitted = true;
}
于 2013-05-31T23:49:13.367 に答える
1

ループ外の想定$count=1;

ループ内に if 文を入れることができます。

if($count==1) { $count++; echo "Whatever";}

お役に立てれば。

于 2014-02-07T17:46:01.390 に答える
1

最良のオプションは、メッセージを変数として設定し、foreach の終了後に変数をエコーすることです。

foreach($allcourses as $course)
{
    if(Auth::LoggedIn())
    {
        if(Auth::$userinfo->rank == 'Student')
        {
            if($course->aircraft == '1')
            {
                $message = '<div class="msg-red">Some lessons could not be found, because you may not be entitled to view/book them at this stage of your course.</div><br/>';
                continue; 
            }
        }
    }
}
if(isset($message))
{
    echo $message;
}
于 2013-05-31T23:50:03.387 に答える