如何在codeigniter中匹配值时跳过foreach循环

时间:2017-04-19 09:55:43

标签: php codeigniter

实际上我有三个foreach循环。我想在第三个foreach循环值($ val == $ test)匹配时跳过第二个foreach循环。 这是我的代码。

  <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> 

3 个答案:

答案 0 :(得分: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;
?>

使用此代码我基于第三个循环条件在第二个循环上应用了 Break; 。希望这对您有用

答案 1 :(得分:0)

您可以使用continue。如果你想跳过嵌套循环,那么你可以写continue n ,其中n是你想要跳过的嵌套循环的数量。

continue 会跳过迭代。

break 将结束循环。

答案 2 :(得分:0)

我仍然认为你不需要第三个循环。您可以删除它并将其替换为in_array(),然后根据结果更改类名。

<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> 

几点 - 您可以使用三元if语句使其更清洁 - 并且在使用短标签(<?= ?>)时也要小心,因为服务器并不总是支持它们。