Echo ўтрыманне ўнутры Еогеасп толькі адзін раз

Я спрабую паўтарыць змесціва ўнутры Еогеасп адзін раз. У той момант, калі форма запаўняецца карыстальнікам, адлюстроўваецца паведамленне для кожнага запісу прапускаюцца. Калі ёсць 35 запісаў прапушчаны, я буду атрымліваць 35 паведамленняў, з-за Еогеасп. Я хачу, каб пазбегнуць гэтага, і быць у стане адлюстраваць толькі адзін рэха на старонцы вынікаў за ўсё. Як я магу гэта зрабіць? Я мяркую, што, магчыма, прыйдзецца зрабіць гэта за межамі Еогеаспа, але я паняцця не маю, як узяць яго з Еогеаспа.

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>
'; 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>
'; continue; } } } }
4

7 адказы

Assuming you must maintain the structure of that object, you could just have a boolean update if $course->aircraft == 1 then echo accordingly:

$found = false;
foreach($allcourses as $course)
{
    if(Auth::LoggedIn())
    {
       if(Auth::$userinfo->rank == 'Student')
       {

           if($course->aircraft == '1')
           {
               $found = true;
           }
        }
    }
}
if($found)
{
    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>
'; }
5
дададзена

Вы можаце ўсталяваць просты пераменны сцяг у гэтым выпадку.

$warningEmitted = false;

Затым у цыкле перад выпраменьваць папярэджаннем:

if(!$warningEmitted) {
   //echo warning here. 
    $warningEmitted = true;
}
2
дададзена

Самы лепшы варыянт, верагодна, будзе ўсталяваць ваша паведамленне ў якасці зменнай, то рэха зменнай пасля Еогеасп скончаная.

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>
'; continue; } } } } if(isset($message)) { echo $message; }
1
дададзена
Па нейкай прычыне, гэта не вяртае ніякіх запісаў :( Варта адзначыць, што ў мяне ёсць пара калі ($ курс-> самалёта == «1») . Я абнавіў галоўнае паведамленне, каб паказаць вы тое, што я маю на ўвазе.
дададзена аўтар user2442178, крыніца
Калі зменныя $ паведамлення ніколі не ўстаноўлена (г.зн. ўмова не ацэньвае дакладна), то ён не адгукнецца на ўсіх. Гэта, верагодна, мае месца ў цесцю, калі вы не здымеце зменныя $ паведамленні з вашага Еогеаспа.
дададзена аўтар Jason, крыніца

Outside the loop assume $count=1;

Ўнутры цыклу можна паставіць, калі заяву.

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

Спадзяюся, што гэта дапамагае.

1
дададзена

Проста выкарыстоўвайце лагічную зменную якой вы ўсталёўваеце хлусня першапачаткова, і ўсталяваць яго на праўдзівы у цыкле, калі вы атрымаеце матч.

Затым вы можаце праверыць лагічнае значэнне пасля таго, як цыкл скончаны, каб вырашыць, калі вам трэба адлюстраваць паведамленне ці не.

0
дададзена

Стварыць дадатковую зменную, у якой вы будзеце захоўваць інфармацыю, ці быў ужо адлюстроўваецца паведамленне ці не. Пры адлюстраванні гэтага, усталюйце вар ў рэчаіснасці.

0
дададзена

Мяркуючы, што я вас правiльна зразумела, я думаю, што вы хочаце выкарыстоўваць «перапынак», каб спыніць цыкл, як толькі праблема знойдзена.

if (Auth::LoggedIn() && Auth::$userinfo->rank == 'Student') {
    foreach ($allcourses as $course) {
        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>
'; break; } 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>
'; break; } } }

Вышэй я таксама пераехаў «калі ўваход у» ўмоўна, каб быць па-за цыклу (так гэта правяраецца толькі адзін раз).

Нешта разгледзець наступныя пытанні:

A more user friendly approach might to add each error into an array - instead of using echo & breaking out - and then loop through that error array at the end, showing with more information about the error so they can be corrected all at once by the end user (depending on how your form works, of course).

0
дададзена
Ці не будзе выкарыстанне перапынак спыніць вынікі паказвалі? Ніжэй МФС, у мяне ёсць радкі табліцы для кожнага $ Курс , які вяртаецца.
дададзена аўтар user2442178, крыніца
Перапынак спыняе бягучы цыкл (і працягваецца пасля цыкла). Калі ў вас ёсць код, які вы не раскрытыя тут таксама ў цыкле, то вы выйгралі б ад іншага рашэння магчыма - я не магу здагадацца, хоць, вы павінны даць больш інфармацыі.
дададзена аўтар Iain Collins, крыніца