与循环PHP 5.6一起使用时,中断,继续和退出问题

时间:2019-07-04 23:10:03

标签: php

Switch语句有效,但是,我试图摆脱循环,但运气不佳。

我尝试了中断,中断1,中断2并继续,但是它不起作用。我正在使用PHP 5.6。 Echo工作正常,数据从DB发出也很好。问题是它打印了三遍。

    <?php 
    $sql = "SELECT * 
    FROM table1
    INNER JOIN verify
    WHERE uname='$showuser'";

    $result = mysqli_query($mysqli,$sql);

    if(mysqli_num_rows($result) > 0){  
        while($row = mysqli_fetch_array($result)){  
        $userid= $row["id"];
        $verify= $row["verified"];

    //NB! Notice how the If and While Loop are not closed here

    ?>

    <?php echo " stuff etc etc" ?>

        <?php 
            //I cant seem to some out of the IF statement. I tried BREAK, CONTINUE and EXIT.
            switch ($verify) {
            case '1': echo "<img src='passed.png' />"; break 1;
            case '3': echo "<img src='failed.png' />"; break 1;

            default:  echo "<img src='waiting.png' />"; break;
            }//END switch
        ?>


        <?php }} //END first IF & WHILE loops

        $sql2 = "SELECT * FROM table2 WHERE e.ctable_id = $userid ";

        $result2 = mysqli_query($mysqli,$sql2) or die(mysqli_error($mysqli));

        if(mysqli_num_rows($result2) > 0){  
            while($row2 = mysqli_fetch_array($result2)){  

        ?>

        <?php echo " stuff etc etc" ?>

        <?php } } //END second IF & WHILE loops ?>

在添加switch语句之前,一切都很好。

2 个答案:

答案 0 :(得分:3)

  

break结束当前foreach, while ,do-while或 switch 结构的执行。

break 1仅会超出您的“ switch”语句,您将需要break 2达到while循环嵌套级别。

$count = 0;
while( $count++ < 10 )
{
  echo 'while';
  switch( true )
  {
    case true:
      echo 'switch';
      break 2; // TWO is needed here to break out of TWO levels of nesting
  }
}

https://www.php.net/manual/en/control-structures.break.php

  

break接受一个可选的数字参数,该参数告诉要分解多少个嵌套的封闭结构默认值为1 ,仅打破了直接封闭的结构。

答案 1 :(得分:0)

要停止脚本的其余部分运行,您可以

exit;

如果要退出if / else语句(如果满意),请执行

return;