上节课我们介绍了php的循环语句for循环和while循环,这节课我们学习循环语句的嵌套和php中常用的跳转语句。
1、循环语句的嵌套
陌小雨用一个简单的例子来说明for循环的嵌套:
<?php
$line=5; //用来控制行数
for($i=1;$i<=$line;$i++){
for($j=1;$j<=$i;$j++){
echo '*'; //输出星号
}
echo '<br />'; //输出换行
}
?>
代码输出结果:
*
**
***
****
*****
用这个输出小学的99乘法表是很方便的。
<?php
for($i=1;$i<=9;$i++){
for($j=1;$j<=$i;$j++){
echo "$j × $i= ".$i*$j.' ';
}
echo '<br />';
}
?>
是的,就这几行代码,99乘法表已经出来了。
2、跳转语句
(1)break语句
break语句我们在学习switch语句时就多次使用过,它用来当前for、foreach、while、do-while或者switch结构的执行。break可以接受一个可选的参数用来指定break跳出几层语言结构,默认值为1,常用在循环嵌套中。
<?php
for($x=1;;$x++){ //省略表达式2的for循环将是无限循环
echo "$x<br />";
if($x==5){
break; //使用if语句控制退出无限循环
}
}
?>
代码运行结果:
1
2
3
4
5
从以上运行结果我们可以看出,这个无限循环并没有使浏览器崩溃,而是正确输出了结果,这也是break语句的常用方式。
<?php
for($x=1;$x<=10;$x++){ //第一层for循环结构
echo '1';
for(;;){ //第二层for循环结构
echo '<br />2';
break 2; //跳出两层循环结构
}
}
?>
代码运行结果:
1
2
以上代码通过break跳出了两个简单的for循环结构,在实际应用中我们应该因地制宜灵活运用break。
(2)continue语句
continue语句用来跳过本次循环中剩余的代码直接进行下一次循环表达式的判断。与break语句类似的,continue语句也可以接受一个可选的参数来决定跳过多层结构。
<?php
for($i=1;$i<=10;$i++){ //for循环输出数值
if($i%3==0) //判断变量是否为3的整数倍
continue; //跳过本次循环剩余语句
echo "$i<br />"; //输出变量的值
}
?>
代码输出结果:
1
2
4
5
7
8
10
以上代码通过循环输出1~10直接的数值,由于中间加入了跳转语句致使是3的整数倍的数值不被输出。
<?php
$i=0; //初始化循环控制变量
while ($i++<3){
echo '第一层while循环。<br />'; //第一层循环输出
while (TRUE) {
echo "第二层while循环。<br />"; //第二层循环输出
while (TRUE) {
echo "第三层while循环。<br />"; //第三层循环输出
continue 3;
}
echo "这里不会被输出<br />"; //由于continue控制语句跳出多层循环,因此这里不会被输出
}
echo "这里同样不会被输出。"; //由于continue控制语句跳出多层循环,因此这里不会被输出
}
?>
代码运行结果:
第一层while循环。
第二层while循环。
第三层while循环。
第一层while循环。
第二层while循环。
第三层while循环。
第一层while循环。
第二层while循环。
第三层while循环。
(3)goto语句
goto语句用来跳转到程序的指定位置开始执行,可以替代break跳出多层结构。PHP中的goto语句被限制在只能在同一个文件和作用域中跳转。例如不可以跳入任何循环和swith结构中。goto语句的常用形式如下所示:
goto tab
…
tab:
…
tab用来表示程序要跳转到位置的标记与goto后的标记要一致。
<?php
for($i=1;$i<=5;$i++){ //使用for循环循环输出1~5
if($i==3)
goto ECH; //当$i为3时候跳出for循环
echo "$i<br />";
}
ECH: //执行goto语句后程序将从此处开始执行
echo "此时\$i=$i";
?>
代码运行结果:
1
2
此时$i=3
我们可以看到goto语句的使用非常方便,但是在编程过程中应该尽量少使用。过多地使用goto语句会使程序流程变得混乱,进而使程序阅读和调试都变得非常困难。PHP中除了上述三种跳转语句之外,return语句也是用来使程序进行跳转,return语句的知识将在接下来课程函数的学习部分进行讲解。
小结:陌小雨通过四节课带大家学习了构成程序整体框架的语言结构。这些知识包括语句的基本概念、选择语句、循环语句和跳转语句。其中的循环语句部分是重点,而且由于循环语句的执行流程均有各自的特点,掌握起来也是比较难的。因此需要多实践,从实践中理解这些知识。