![PHP 从入门到项目实践(超值版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/705/27111705/b_27111705.jpg)
4.2 循环控制语句
![](https://epubservercos.yuewen.com/B097BE/15477656605638806/epubprivate/OEBPS/Images/Figure-P85_11631.jpg?sign=1738863051-CfsSErtGkcgdRWyYk9vXxNah5jErzSQa-0-e85e9234cc7fefe487ac4fc64481b677)
在编写程序时,有时需要相同的代码块一次又一次地重复运行,这时可以使用循环控制语句完成它。循环控制语句有while、do…while、for和foreach等。
4.2.1 while循环语句
while循环语句是最简单的循环语句,只要指定的条件成立,则循环执行代码块。语法格式如下:
![](https://epubservercos.yuewen.com/B097BE/15477656605638806/epubprivate/OEBPS/Images/Figure-P85_73898.jpg?sign=1738863051-w49UhBKGjrVfuBTBJx7wE2QN0QcMbd7T-0-35152c250439d9c6238747f5c2c8a43c)
while语句的流程控制图如图4-9所示。
【例4-5】(实例文件:ch04\Chap4.5.php)while语句实例。
![](https://epubservercos.yuewen.com/B097BE/15477656605638806/epubprivate/OEBPS/Images/Figure-P85_73899.jpg?sign=1738863051-IIyFcThJzZ1MgHdZnIKFtnDAWZmr1Nei-0-6b3b9d617055a9df37e51d80a01fb31b)
在IE浏览器中运行结果如图4-10所示。
![](https://epubservercos.yuewen.com/B097BE/15477656605638806/epubprivate/OEBPS/Images/Figure-P86_11637.jpg?sign=1738863051-X9iQ75zUk9qNRofIplBR9xLrw1KZun4e-0-ffa0c7285d81c7c977fb7d6cd299e2ac)
图4-9 while语句的流程控制图
![](https://epubservercos.yuewen.com/B097BE/15477656605638806/epubprivate/OEBPS/Images/Figure-P86_11640.jpg?sign=1738863051-pYf3yCN1peC9o0fQDzStdmNCezYM3RzO-0-636c33495e1ccd35b45fbde7663af77c)
图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循环语句的语法格式为
![](https://epubservercos.yuewen.com/B097BE/15477656605638806/epubprivate/OEBPS/Images/Figure-P86_73900.jpg?sign=1738863051-SY2YF2HwavYv9zLaYloDwCHHC6b0zNnq-0-cef64fd39d118996123e8721cb0c0ade)
do...while语句的流程控制图如图4-11所示。
【例4-6】(实例文件:ch04\Chap4.6.php)do...while语句实例。
![](https://epubservercos.yuewen.com/B097BE/15477656605638806/epubprivate/OEBPS/Images/Figure-P86_73901.jpg?sign=1738863051-UgBnrlbPvyRDqFY4TyhyMmvedIHiBTUm-0-ab2db4ac94fdb008949a9643ad3d5b8c)
在IE浏览器中运行结果如图4-12所示。
![](https://epubservercos.yuewen.com/B097BE/15477656605638806/epubprivate/OEBPS/Images/Figure-P86_11721.jpg?sign=1738863051-UjwEhIBRFbWxT8jhuko9MS7LopxjgnXP-0-07f3d39d2e09034b3a93c5a40e06eec0)
图4-11 do...while语句的流程控制图
![](https://epubservercos.yuewen.com/B097BE/15477656605638806/epubprivate/OEBPS/Images/Figure-P86_11724.jpg?sign=1738863051-RJVmL1r06WBHWHUPXe1AYNbNlg1MrZVb-0-d5d917c751b59179fd64e26d43baac37)
图4-12 do...while语句运行结果
注释:在do...while循环语句的实例中,首先设置变量$i的值为1,然后开始do...while循环,变量$i的值递增1,检查条件$i是否小于等于5,如果$i满足条件,循环将继续进行。
4.2.3 for循环语句
for循环是PHP中最复杂的循环结构。for循环语句的语法结构如下:
![](https://epubservercos.yuewen.com/B097BE/15477656605638806/epubprivate/OEBPS/Images/Figure-P87_73902.jpg?sign=1738863051-wPJFP0DlAxoeRRtcqaAK8PGEpV7CrDZR-0-c16dbbc76873e20995dfb2f011ab2faf)
其中:
- 初始值:主要是初始化一个变量值,用于设置一个计数器。
- 条件:循环执行的限制条件。如果条件成立,则循环继续;如果条件不成立,则循环结束。
- 增量:用于递增计数器。
for循环语句的流程控制图如图4-13所示。
【例4-7】(实例文件:ch04\Chap4.7.php)for循环语句实例。
![](https://epubservercos.yuewen.com/B097BE/15477656605638806/epubprivate/OEBPS/Images/Figure-P87_73903.jpg?sign=1738863051-uknoQCU0m842aQdUqPH79rjQ658a4O0d-0-7fe25b82daef1c1c8b10bc7c00e1e705)
在IE浏览器中运行结果如图4-14所示。
![](https://epubservercos.yuewen.com/B097BE/15477656605638806/epubprivate/OEBPS/Images/Figure-P87_11795.jpg?sign=1738863051-LAjlQLNYEcTcIqnl2OSkcUr5OMQryui5-0-747d617f855dd396c789fd33f61bf96d)
图4-13 for循环语句的流程控制图
![](https://epubservercos.yuewen.com/B097BE/15477656605638806/epubprivate/OEBPS/Images/Figure-P87_11798.jpg?sign=1738863051-y5spj8c7NXvJOGQNBn8DCiFGhDQCNGmO-0-ea2440231949d9afed77e251f0d52fc5)
图4-14 for循环语句运行结果
注释:在for循环实例中,首先定义了一个整型变量$a,然后定义了初始值为$i=1的循环,只要变量$i小于等于5,循环将继续运行,循环每运行一次,变量$a的值就会递增1。
4.2.4 foreach循环语句
foreach循环提供了遍历数组的简单方式。foreach只能应用于数组和对象,如果尝试应用于其他数据类型的变量或者未初始化的变量,将发出错误信息。foreach循环有以下两种语法格式:
第一种:
![](https://epubservercos.yuewen.com/B097BE/15477656605638806/epubprivate/OEBPS/Images/Figure-P87_73904.jpg?sign=1738863051-jDQZt3egGVzjfoGkY4xUmuKbA6U8phq1-0-f8ed3d6f0c31c641139fcc8bdb410a4e)
第二种:
![](https://epubservercos.yuewen.com/B097BE/15477656605638806/epubprivate/OEBPS/Images/Figure-P88_73908.jpg?sign=1738863051-Esx8p6F0aaXb8iFtJ2hYF3jWIxzEhsaC-0-898c911801dcdda45f2c6b5577248dbf)
foreach循环遍历数组时,每进行一次循环,当前数组元素的值就会被赋值给$value变量,在进行下一次循环时,将看到数组中的下一个值。
下面举一个实例,应用foreach语句输出数组中存储的人员信息。
【例4-8】(实例文件:ch04\Chap4.8.php)foreach循环实例。
![](https://epubservercos.yuewen.com/B097BE/15477656605638806/epubprivate/OEBPS/Images/Figure-P88_73909.jpg?sign=1738863051-JlKoFyf3XsMb83WFl1K8gx8uVbzpAcss-0-0a0520e765956aaf4e4d95c7ee86ce66)
在IE浏览器中运行结果如图4-15所示。
![](https://epubservercos.yuewen.com/B097BE/15477656605638806/epubprivate/OEBPS/Images/Figure-P88_11968.jpg?sign=1738863051-1OyEoeQJc2zNFhDD5SFTbAfuFqJPKy5B-0-aaea4d13cb6abc169207aeac242a8eaa)
图4-15 foreach循环运行结果
提示:在使用foreach语句遍历数组和对象时,可以先使用is_array()函数和is_object()函数判断变量是否是数组类型和对象类型,避免foreach语句用于其他数据类型和未初始化变量时产生错误。