零起点php入门第8课-php语言结构(3)

Author: 陌小雨Date: 2015-09-06View: 65

计算机最擅长做的工作就是重复地执行一系列的命令。循环语句就是指定一系列的语句并规定一个条件,让计算机重复执行这些语句直到满足规定的条件为止。PHP中提供了for循环、while循环和do…while循环,下面就来介绍这些知识。

1、for循环

for循环使用灵活性比较高,是PHP中使用最频繁的循环语句。for循环的一般形式如下所示:

for (表达式1; 表达式2; 表达式3)
{
语句;
}

表达式1通常为赋值语句,用来初始化循环控制变量的初始值;表达式2通常为关系表达式或者逻辑表达式,用来确定何时停止循环;表达式3通常为递增或者递减表达式,用来对循环控制变量进行修改以逐步不满足表达式2的条件,否则就有可能造成无限循环。for循环条件的流程图如图所示。
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循环,它的执行流程图如图所示。

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循环会保证循环体被执行一次,它执行的流程图如图所示。

dowhile

<?php
	$x=10;			//初始化变量x
	do{
		echo "$x";
	}while($x<5);
?>

代码运行结果:10

在代码中的判断条件虽然为FALSE,但是循环体语句仍会执行一次,这就是do…while循环的特性。

除了以上介绍的三种循环语句之外,PHP还支持foreach循环语句,它是专门用来操作数组的循环语句,因此该循环将在接下来课程数组学习部分进行讲解。