
4.2 循环控制语句

在编写程序时,有时需要相同的代码块一次又一次地重复运行,这时可以使用循环控制语句完成它。循环控制语句有while、do…while、for和foreach等。
4.2.1 while循环语句
while循环语句是最简单的循环语句,只要指定的条件成立,则循环执行代码块。语法格式如下:

while语句的流程控制图如图4-9所示。
【例4-5】(实例文件:ch04\Chap4.5.php)while语句实例。

在IE浏览器中运行结果如图4-10所示。

图4-9 while语句的流程控制图

图4-10 while语句运行结果
注释:在while循环实例中,首先设置变量$i,值为1;然后判断$i是否小于等于5,满足条件,while循环继续运行,循环运行一次,$i的值就会递增1。
4.2.2 do...while循环语句
do...while首先执行一次代码块,然后在指定的条件成立时重复循环。
do...while循环和while循环非常相似,区别在于条件是在每次循环结束时检查而不是开始时就检查,这样do...while的循环语句保证会执行一次,而在while循环中,如果一开始就判断条件不成立,则整个循环一次都不会执行。do...while循环语句的语法格式为

do...while语句的流程控制图如图4-11所示。
【例4-6】(实例文件:ch04\Chap4.6.php)do...while语句实例。

在IE浏览器中运行结果如图4-12所示。

图4-11 do...while语句的流程控制图

图4-12 do...while语句运行结果
注释:在do...while循环语句的实例中,首先设置变量$i的值为1,然后开始do...while循环,变量$i的值递增1,检查条件$i是否小于等于5,如果$i满足条件,循环将继续进行。
4.2.3 for循环语句
for循环是PHP中最复杂的循环结构。for循环语句的语法结构如下:

其中:
- 初始值:主要是初始化一个变量值,用于设置一个计数器。
- 条件:循环执行的限制条件。如果条件成立,则循环继续;如果条件不成立,则循环结束。
- 增量:用于递增计数器。
for循环语句的流程控制图如图4-13所示。
【例4-7】(实例文件:ch04\Chap4.7.php)for循环语句实例。

在IE浏览器中运行结果如图4-14所示。

图4-13 for循环语句的流程控制图

图4-14 for循环语句运行结果
注释:在for循环实例中,首先定义了一个整型变量$a,然后定义了初始值为$i=1的循环,只要变量$i小于等于5,循环将继续运行,循环每运行一次,变量$a的值就会递增1。
4.2.4 foreach循环语句
foreach循环提供了遍历数组的简单方式。foreach只能应用于数组和对象,如果尝试应用于其他数据类型的变量或者未初始化的变量,将发出错误信息。foreach循环有以下两种语法格式:
第一种:

第二种:

foreach循环遍历数组时,每进行一次循环,当前数组元素的值就会被赋值给$value变量,在进行下一次循环时,将看到数组中的下一个值。
下面举一个实例,应用foreach语句输出数组中存储的人员信息。
【例4-8】(实例文件:ch04\Chap4.8.php)foreach循环实例。

在IE浏览器中运行结果如图4-15所示。

图4-15 foreach循环运行结果
提示:在使用foreach语句遍历数组和对象时,可以先使用is_array()函数和is_object()函数判断变量是否是数组类型和对象类型,避免foreach语句用于其他数据类型和未初始化变量时产生错误。