2017-04-19 9 views
0

Eigentlich habe ich drei foreach loop.Ich möchte die zweite foreach Schleife überspringen, wenn dritte foreach Schleife Wert ($ val == $ test) übereinstimmen. Das ist mein Code.Wie foreach Schleife zu überspringen, wenn Wert in codeigniter übereinstimmen

<tbody> 
    <?php foreach ($tests as $test): ?> 
    <tr> 
    <td><?= $test; ?></td> 
    <?php foreach ($room as $key => $value): ?> 
     <?php foreach ($value['dates'] as $val) : ?> 
     <?php if ($val == $test) { ?> 
     <td><span class="text-danger"><?= $value['room_id'];?</span></td> 
     <?php } ?> 
     <?php endforeach; ?> 
    <td><span class="text-custom"><?= $value['room_id']; ?></span></td> 
    <?php endforeach; ?> 
    </tr> 
<?php endforeach; ?> 
</tbody> 
+2

@Saty ist es nicht "weiter"? –

+0

du meinst, wenn $ val == $ test, dann sollte es zuerst foreach bedeutet $ room one is it? – rahulsm

+0

Ich würde die dritte Schleife komplett verlieren - da der einzige Unterschied der Klassenname ist. Betrachten Sie etwas wie 'in_array', um zu sehen, ob' $ test' in '$ value ['dates']' existiert - ändern Sie dann die Klasse, wenn dies der Fall ist. – Tom

Antwort

0

Ich halte immer noch Sie brauchen nicht für die dritte Schleife. Sie können dies entfernen und durch ersetzen, dann ändern Sie den Klassennamen abhängig vom Ergebnis.

<tbody> 
    <?php foreach ($tests as $test): ?> 
    <tr> 
     <td><?= $test; ?></td> 
     <?php 
      foreach ($room as $key => $value): 
       $class = "text-custom"; 
       if(in_array($test, $value['dates']) { 
        $class = "text-danger"; 
       } 

      <td><span class="<?php echo $class; ?>"><?= $value['room_id'];?</span></td> 

     <?php endforeach; ?> 
    </tr> 
    <?php endforeach; ?> 
</tbody> 

paar Punkte - man könnte diese sauberer machen durch eine ternäre if Anweisung - und auch vorsichtig sein, wenn kurz-Tags (<?= ?>), wie sie sind nicht immer von den Servern unterstützt.

+0

Dankeschön an Sie @ thebluefox .... du bist mein Projekt gelöst ..... danke vielen Dank dir .. – shalder

+0

Mein Vergnügen @shalder – Tom

0
<tbody> 
<?php foreach ($tests as $test): ?> 
    <tr> 
     <td><?= $test; ?></td> 
     <?php 
     $bool = FALSE; 
     foreach ($room as $key => $value): 
      ?> 
      <?php foreach ($value['dates'] as $val) : ?> 
       <?php if ($val == $test) { ?> 
        <td><span class="text-danger"><?= $value['room_id']; ?></span></td> 
        <?php 
        $bool = TRUE; 
        break; 
       } 
       ?> 
      <?php endforeach; ?> 
      <td><span class="text-custom"><?= $value['room_id']; ?></span></td> 

      <?php 
      if ($bool) { 
       continue; 
      } 

     endforeach; 
     ?> 
    </tr> 
    <?php 
endforeach; 
?> 

Verwendung Dieser Code I Pause angewendet wird; auf der zweiten Schleife auf der Basis der dritten Schleife condition.Hope Dies wird für Sie arbeiten

+0

eigentlich funktioniert es nicht für mich richtig .. danke für die Hilfe – shalder

+0

Jetzt benutze ich ersetzte Pause mit weiter –

0

können Sie continue verwenden. Wenn Sie die verschachtelte Schleife überspringen möchten, können Sie continuen schreiben, wobei n die Nummer der verschachtelten Schleife ist, die Sie überspringen möchten.

continue wird die Iteration überspringen.

break wird Schleife beenden.

Verwandte Themen