计算机最擅长做的工作就是重复地执行一系列的命令。循环语句就是指定一系列的语句并规定一个条件,让计算机重复执行这些语句直到满足规定的条件为止。PHP中提供了for循环、while循环和do…while循环,下面就来介绍这些知识。
1、for循环
for循环使用灵活性比较高,是PHP中使用最频繁的循环语句。for循环的一般形式如下所示:
for (表达式1; 表达式2; 表达式3)
{
语句;
}
表达式1通常为赋值语句,用来初始化循环控制变量的初始值;表达式2通常为关系表达式或者逻辑表达式,用来确定何时停止循环;表达式3通常为递增或者递减表达式,用来对循环控制变量进行修改以逐步不满足表达式2的条件,否则就有可能造成无限循环。for循环条件的流程图如图所示。
for循环的执行过程如下:
(1)计算表达式1的值,为循环控制变量赋初值,该语句只在循环开始时执行一次;
(2)计算表达式2的值,如果其值为TRUE,则执行循环体语句,否则退出循环;
(3)在每一次执行循环体语句结束后,运行一次表达式3,以调整循环控制变量。然后返回第2步重新计算表达式2的值,依次重复,直到表达式2的条件不成立为止。
陌小雨给大家一个简单的例子吧:
<?php for($i=1;$i<=5;$i++){ echo "$i<br />"; //循环体 } ?>
代码运行结果:
1
2
3
4
5
for循环的灵活之处就表现在它可以有多种形式,下面我们来分别介绍这些形式:
省略表达式1:这种形式的表达式1通常写在for循环的外面。这种形式主要用在循环控制变量的初值不是已知常量,而是需要通过前面语句的执行计算得到的情况。
<?php $x=10; //初始化两个变量 $y=5; $z=$x-$y; //初始化变量 for(;$z<=5;$z++){ //省略表达式1的for循环 echo "$z<br />"; } ?>
代码运行结果:5
将以上代码中的$y的值改为7后运行。代码运行结果
3
4
5
以上形式就是通过外部的运算来确定表达式1的值进而影响到for循环的次数。
省略表达式2:因为表达式2默认值为TRUE,因此这种形式如果在循环体中不加入跳转语句将会是一个无限循环。
省略表达式3:这种形式的表达式3通常写在循环体内,在循环体内改变表达式的值,常用的形式如下所示:
<?php for($i=0;$i<=100;){ //省略表达式3 ... $i=$x*3+4; //在内部修改其值 ... } ?>
上面介绍的是省略for循环中表达式的情况。for循环不仅每个表达式可以为空,它的每个表达式还可以是由多个逗号分隔的表达式构成。
<?php for($x=1,$y=2,$z=3;$x<=1,$y<=3,$z<=5;$x++,$y++,$z++){ //多个逗号分隔的表达式 echo "$x$y$z<br />"; //输出三个变量的值 } >
代码运行结果:
123
234
345
从运行结果我们可以得知,程序循环只进行了三次,这是因为在for循环中的表达式2中,虽然所有用逗号分隔的表达式都会计算,但只取最后一个结果。因此$z从3到5只用三次循环即可。
2、while循环
while循环与for循环相比使用比较简单,它通常用于不确定循环次数的情况,它的一般形式如下所示:
while (表达式)
{
语句;
}
while循环在开始和每次执行循环体语句后均会判断表达式的值,如果为TRUE,则执行循环体,如果为FALSE则退出while循环,它的执行流程图如图所示。
<?php $x=1; //初始化变量 while($x<=5){ //执行while循环 echo "$x<br />"; $x++; } ?>
代码运行结果:
1
2
3
4
5
我们使用while循环同样实现了输出数值1~5。这里我们需要明白的一点是通常循环语句间是可以进行转换的。
3、do…while
do…while循环与while类似,它的一般形式如下所示:
do
{
语句;
}
while (表达式)
do…whlie循环会首先执行循环体中的语句一次然后再去判断表达式中的条件,如果为TRUE则继续执行循环体,为FALSE则退出循环。也就是说do…while循环会保证循环体被执行一次,它执行的流程图如图所示。
<?php $x=10; //初始化变量x do{ echo "$x"; }while($x<5); ?>
代码运行结果:10
在代码中的判断条件虽然为FALSE,但是循环体语句仍会执行一次,这就是do…while循环的特性。
除了以上介绍的三种循环语句之外,PHP还支持foreach循环语句,它是专门用来操作数组的循环语句,因此该循环将在接下来课程数组学习部分进行讲解。