![PHP从入门到精通(第5版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/701/32463701/b_32463701.jpg)
4.3 跳转语句
![](https://epubservercos.yuewen.com/535BFF/17527145607821006/epubprivate/OEBPS/Images/Figure-P105_241943.jpg?sign=1738864176-xQvfgbK5IhCKpMxJ0xN7DIcBQSsfm38m-0-1d44a73c4a125fc99f2153c6344f2d41)
在使用循环语句时,有时不确定循环的次数,遇到这样的情况可以使用无限循环,如:
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所示。
![](https://epubservercos.yuewen.com/535BFF/17527145607821006/epubprivate/OEBPS/Images/Figure-P106_188385.jpg?sign=1738864176-FV8TyITb30EbNPpP9JmYW3U8NSoCxFc1-0-beca6afa0d77eca6ab0b3ac8297718f4)
图4.11 使用break语句跳出循环
break语句不仅可以跳出当前的循环,还可以指定跳出几重循环。格式如下:
break $num;
其中,$num指定要跳出几层循环。break关键字的流程控制图如图4.12所示。
![](https://epubservercos.yuewen.com/535BFF/17527145607821006/epubprivate/OEBPS/Images/Figure-P106_241950.jpg?sign=1738864176-STIH3ps9wYjCPC0zDXmIsTmES2LnZG5m-0-9b7c9e6860541c70a7c266ea592f518d)
图4.12 break流程控制图
【例4.10】本例共有3层循环,最外层的while循环和中间层的for循环是无限循环,最里面并列两个for循环:程序首先执行第一个for循环,当变量$i等于7时,跳出当前循环(一重循环),继续执行第二个for循环,当第二个for循环中的变量$j等于15时,将直接跳出最外层循环。实例代码如下:(实例位置:资源包\TM\sl\4\10)
![](https://epubservercos.yuewen.com/535BFF/17527145607821006/epubprivate/OEBPS/Images/Figure-P107_241952.jpg?sign=1738864176-jn9SKDp1XdXbN7nx43KcsXCv4fUuhqFv-0-6e876b6e7b81acfa4b883cc8d86aeba4)
运行结果如图4.13所示。
![](https://epubservercos.yuewen.com/535BFF/17527145607821006/epubprivate/OEBPS/Images/Figure-P107_188580.jpg?sign=1738864176-MGUejnK7MeWnWZGrPaU2uWC6LlOKt7PJ-0-4297c7ca9b4579edcee343b66c2e88c2)
图4.13 使用break关键字跳出多重循环
4.3.2 continue语句
continue关键字的作用没有break强大,它只能终止本次循环而进入到下一次循环中,也可以指定跳出几重循环。continue关键字的流程控制图如图4.14所示。
![](https://epubservercos.yuewen.com/535BFF/17527145607821006/epubprivate/OEBPS/Images/Figure-P108_241956.jpg?sign=1738864176-nuAaLLOKbss3Eo5rqoVyVRnSbMSesSDB-0-a696452d4965d46ca0eeb8a957b25877)
图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所示。
![](https://epubservercos.yuewen.com/535BFF/17527145607821006/epubprivate/OEBPS/Images/Figure-P108_188751.jpg?sign=1738864176-STaE31FbSYrnNiq1ol1rPgvhHoNwCrZF-0-56f2f2c5d156531b8f17781ab287d550)
图4.15 使用continue关键字控制流程