PHP从入门到精通(第4版)(软件开发视频大讲堂)
上QQ阅读APP看书,第一时间看更新

4.3 跳转语句

视频讲解:光盘\TM\lx\4\09 跳转语句.mp4

在使用循环语句时,有时不确定循环的次数,遇到这样的情况可以使用无限循环,如:

        while(true){
            …
        }

        for(; ; ){
            …
        }

只有当程序块满足一定条件后才跳出循环,跳出循环使用的关键字是break和continue。

4.3.1 break语句

break关键字可以终止当前的循环,包括while、do…while、for、foreach和switch在内的所有控制语句。下面来看一个实例。

【例4.9】本例将使用一个while循环,while后面的判断式的值为true,即为一个无限循环。在while程序块中将声明一个随机数变量$tmp,只有当生成的随机数等于10时,使用break语句跳出循环。实例代码如下:(实例位置:光盘\TM\sl\4\9)

        <?php
          while(true){                               //使用while循环
              $tmp=rand(1,20);                       //声明一个随机数变量$tmp
              echo$tmp."";                            //输出随机数
              if($tmp==10){                           //判断随机数是否等于10
                  echo "<p>变量等于10,终止循环";
                  break;                             //如果等于10,使用break语句跳出循环
              }
          }
        ?>

运行结果如图4.11所示。

图4.11 使用break语句跳出循环

break语句不仅可以跳出当前的循环,还可以指定跳出几重循环。格式如下:

        break $num;

其中,$num指定要跳出几层循环。break关键字的流程控制图如图4.12所示。

图4.12 break流程控制图

【例4.10】本例共有3层循环,最外层的while循环和中间层的for循环是无限循环,最里面并列两个for循环:程序首先执行第一个for循环,当变量$i等于7时,跳出当前循环(一重循环),继续执行第二个for循环,当第二个for循环中的变量$j等于15时,将直接跳出最外层循环。实例代码如下:(实例位置:光盘\TM\sl\4\10)

运行结果如图4.13所示。

图4.13 使用break关键字跳出多重循环

4.3.2 continue语句

continue关键字的作用没有break强大,它只能终止本次循环而进入到下一次循环中,也可以指定跳出几重循环。continue关键字的流程控制图如图4.14所示。

图4.14 continue流程控制图

【例4.11】本例使用for循环输出A~J的数组变量。如果变量的数组下标为偶数,则只输出一个空行;如果是奇数,则继续输出。在最里面的循环中,判断当前数组下标是否等于$i,如果不相等,则输出数组变量,否则跳到最外重循环。实例代码如下:(实例位置:光盘\TM\sl\4\11)

        <?php
            $arr=array("A", "B", "C", "D", "E", "F", "G", "H", "I", "J");    //声明一个数组变量$arr
            for($i=0; $i<10; $i++){                                          //使用for循环
                echo "<br>";
                if($i % 2==0){                                               //如果$i的值为偶数,则跳出本次循环
                    continue;
                }
                for(; ; ){                                                   //无限循环
                    for($j=0; $j<count($arr); $j++){                         //再次使用for循环输出数组变量
                        if($j==$i){                                          //如果当前输出的数组下标等于$i
                            continue 3;                                      //跳出最外重循环
                        }else{
                            echo"\$arr[".$j."]=".$arr[$j]."";                //输出表达式
                        }
                    }
                }
                echo "这句话永远不会输出";
            }
        ?>

运行结果如图4.15所示。

图4.15 使用continue关键字控制流程