![PHP入门很轻松(微课超值版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/100/44510100/b_44510100.jpg)
2.6.2 循环控制结构
循环控制语句主要包括3种,即while循环、do…while循环和for循环。while循环在代码运行的开始检查表述的真假;而do…while循环则在代码运行的末尾检查表述的真假,即do…while循环至少要运行一遍。
1.while循环语句
while循环的结构如下:
![](https://epubservercos.yuewen.com/C06CD9/23721570201955106/epubprivate/OEBPS/Images/Figure-P43_36824.jpg?sign=1739274071-FezDc1roXk2bnDFGfR1z4TV4fqkytrHc-0-475c3bee88e104555950df5a7dbc6424)
其中,当“条件判断语句”为真时,执行后面的“命令执行语句”,然后返回条件表达式继续进行判断,直到表达式的值为假才能跳出循环,执行后面的语句。
while循环语句的流程控制图如图2-27所示。
![](https://epubservercos.yuewen.com/C06CD9/23721570201955106/epubprivate/OEBPS/Images/Figure-P43_3725.jpg?sign=1739274071-0hrMed1rM8pSnoWS7quiDbXzIlPjNBoL-0-82c5da686eef05cb73c96f5e30ebedc2)
图2-27 while循环语句流程控制图
【例2-23】循环输出30以内的偶数(实例文件:源文件\ch02\2.23.php)。
![](https://epubservercos.yuewen.com/C06CD9/23721570201955106/epubprivate/OEBPS/Images/Figure-P43_36827.jpg?sign=1739274071-Ga6OEQ98j8cUUbL38G0jLhVrdvvqc1Oq-0-43a138017c27c6c2ae68985e33244c63)
运行结果如图2-28所示。
![](https://epubservercos.yuewen.com/C06CD9/23721570201955106/epubprivate/OEBPS/Images/Figure-P44_3798.jpg?sign=1739274071-ONAKR03PiGhvITFCfrOxLl9WXwqgsIQ0-0-eb2a21205b286e7e17fc4b0b9beaaa8c)
图2-28 while循环语句
本实例主要实现30以内的偶数输出。从0~30依次判断是否为偶数,如果是,则输出;如果不是,则继续下一次的循环。
2.do…while循环语句
do…while循环的结构如下:
![](https://epubservercos.yuewen.com/C06CD9/23721570201955106/epubprivate/OEBPS/Images/Figure-P44_36829.jpg?sign=1739274071-9NCbOyHH4Bp6RvMxLUcYWABTpk5Wawqk-0-eee66464fc951ee146ea1a6cebf3a91c)
先执行do后面的“命令执行语句”,其中的变量会随着命令的执行发生变化。当此变量通过while后的“条件判断语句”判断为假时,停止执行“命令执行语句”。
do…while循环语句的流程控制图如图2-29所示。
![](https://epubservercos.yuewen.com/C06CD9/23721570201955106/epubprivate/OEBPS/Images/Figure-P44_3821.jpg?sign=1739274071-7N7DyvC07JR0Z1NrDsTqYdRNZLMo0Ae1-0-7375185474b2c839f65b3f0493942d9b)
图2-29 do…while循环语句流程控制图
【例2-24】使用do…while循环语句(实例文件:源文件\ch02\2.24.php)。
![](https://epubservercos.yuewen.com/C06CD9/23721570201955106/epubprivate/OEBPS/Images/Figure-P44_36830.jpg?sign=1739274071-X4IDtdgVMMPXUPyDaW7uNruPKkEm2W0J-0-5e673bf6db76802c6961d13753689586)
运行结果如图2-30所示。在do…while循环语句的实例中,首先设置变量$i的值为1。然后开始do…while循环,将变量$i的值递增1,然后输出,接下来检查条件$i是否小于或等于10,如果$i满足条件,循环继续进行。
3.for循环语句
for循环的结构如下:
![](https://epubservercos.yuewen.com/C06CD9/23721570201955106/epubprivate/OEBPS/Images/Figure-P45_36832.jpg?sign=1739274071-Rf8ZUYKml56hBhbValuFNlHsYlbKxL2y-0-62414f7f33bc1cb8d4b68d20e3a6efe2)
其中expr1为条件的初始值,expr2为判断的最终值,通常都使用比较表达式或逻辑表达式充当判断的条件,执行完命令执行语句后,再执行expr3。
for循环语句的流程控制图如图2-31所示。
![](https://epubservercos.yuewen.com/C06CD9/23721570201955106/epubprivate/OEBPS/Images/Figure-P45_3901.jpg?sign=1739274071-nFwRwwKlTgEmbRKCBiey9E8j8DZZZv7w-0-4e13ed37ab8e43a3b1aac0e3def10a8d)
图2-30 do…while循环语句
![](https://epubservercos.yuewen.com/C06CD9/23721570201955106/epubprivate/OEBPS/Images/Figure-P45_3904.jpg?sign=1739274071-eaz9cDhDz5O5vOuJLdJJduO7bAwObs5b-0-5faf8d93a19a432f5141957e5cb9b829)
图2-31 for循环语句流程控制图
【例2-25】使用for循环语句输出九九乘法表(实例文件:源文件\ch02\2.25.php)。
![](https://epubservercos.yuewen.com/C06CD9/23721570201955106/epubprivate/OEBPS/Images/Figure-P45_36835.jpg?sign=1739274071-8NJljgZ90XJ3Ez0rFzXGPdZnxmnUXACJ-0-eb283d9a72cc46be22a1fecd2a56b385)
运行结果如图2-32所示。
![](https://epubservercos.yuewen.com/C06CD9/23721570201955106/epubprivate/OEBPS/Images/Figure-P45_3975.jpg?sign=1739274071-HG9hGkPIkl4LAnmSZmVnQCAe0qWPYOQD-0-51581e13b675fe63966da8f601a5a8e3)
图2-32 for循环语句
4.foreach循环语句
foreach语句是一种常用的循环语句,经常被用来遍历数组元素。它的格式如下:
![](https://epubservercos.yuewen.com/C06CD9/23721570201955106/epubprivate/OEBPS/Images/Figure-P46_36836.jpg?sign=1739274071-iXvKjOwTK0IhSFnC761RMj9hwOtO6W4g-0-24aa985e843655df80238b82acaf486d)
可以根据数组的情况分为两种,即不包含键值的数组和包含键值的数组。
不包含键值的如下:
![](https://epubservercos.yuewen.com/C06CD9/23721570201955106/epubprivate/OEBPS/Images/Figure-P46_36837.jpg?sign=1739274071-M9nQkj4FoPFzEu7VD004aV9JuM7GutQl-0-e2279780eddd582336f9474fe8d2b43f)
包含键值的如下:
![](https://epubservercos.yuewen.com/C06CD9/23721570201955106/epubprivate/OEBPS/Images/Figure-P46_36838.jpg?sign=1739274071-B0jflHMn3gVAR94LcXYUKS8Ur0b8N3IQ-0-333a53e7c674dcfb5507f1cb4b0ba63f)
每进行一次循环,当前数组元素的值就会被赋值给数组元素值变量,数组指针会逐一移动,直到遍历结束。
【例2-26】输出商品数组信息(实例文件:源文件\ch02\2.26.php)。
![](https://epubservercos.yuewen.com/C06CD9/23721570201955106/epubprivate/OEBPS/Images/Figure-P46_36839.jpg?sign=1739274071-mxMDGUVtFGSKwgdts3iQkRLi3fZTVz9X-0-a658ab96b08aec579fc5bb77c73eeeba)
运行结果如图2-33所示。
![](https://epubservercos.yuewen.com/C06CD9/23721570201955106/epubprivate/OEBPS/Images/Figure-P46_4175.jpg?sign=1739274071-p0DD84zE4iS2NYd6cINATdJ2ceo3rZ98-0-a8073cabeb2e83fb423f736328c76183)
图2-33 foreach循环语句
5.流程控制的另一种书写格式
在一条含有多条件、多循环的语句中,包含多个{},查看起来比较烦琐。流程控制语言的另一种书写方式是以:来代替左边的花括号,使用endif;、endwhile;、endfor;、endforeach;和endswitch;代替右边的花括号,这种描述程序结构的可读性比较强。常见的语法格式如下。
条件控制语句中的if语句如下:
![](https://epubservercos.yuewen.com/C06CD9/23721570201955106/epubprivate/OEBPS/Images/Figure-P47_36840.jpg?sign=1739274071-EzTHSgoDgBRkxI4mMjXlaReyEUKeUmxb-0-1ce02c3d230d3466fa68a4cf437fb516)
条件控制语句中的switch语句如下:
![](https://epubservercos.yuewen.com/C06CD9/23721570201955106/epubprivate/OEBPS/Images/Figure-P47_36841.jpg?sign=1739274071-zf1KJSHpkvQVf4N9wm0n62pwMNr3FihG-0-85c2c9487f6c8c7799e89ce30d8171a1)
循环控制语句中的while循环如下:
![](https://epubservercos.yuewen.com/C06CD9/23721570201955106/epubprivate/OEBPS/Images/Figure-P47_36842.jpg?sign=1739274071-2va9UZFld8TuATMLFjmIbN8ImP2q8laK-0-d3f6392776650bb0dfb8de332e014e57)
循环控制语句中的do…while循环如下:
![](https://epubservercos.yuewen.com/C06CD9/23721570201955106/epubprivate/OEBPS/Images/Figure-P47_36843.jpg?sign=1739274071-HWgezTjGonxOgQcPZwgi8MPntY5Nqxik-0-94acdff7c830219f540bcabe500940a2)
循环控制语句中的for循环如下:
![](https://epubservercos.yuewen.com/C06CD9/23721570201955106/epubprivate/OEBPS/Images/Figure-P47_36844.jpg?sign=1739274071-lK1eLh8xidy24IE7m7EtnXfkKMDeRI0F-0-1991e247f2164835fe4c3d6fd5d1e1f3)
6.使用break/continue语句跳出循环
使用break关键字用来跳出(也就是终止)循环控制语句和条件控制语句中switch语句的执行,示例如下:
![](https://epubservercos.yuewen.com/C06CD9/23721570201955106/epubprivate/OEBPS/Images/Figure-P47_36845.jpg?sign=1739274071-umdIJY6FDb6FcotE5Kw0nXi9cMT964lp-0-1d078a8ef1b519c198e8b60e2f450a67)
在这段程序中,while循环控制语句里面包含一个switch流程控制语句。在程序执行到break语句时,break会终止执行switch语句,或者是switch和while语句。其中,在case 1下的break语句跳出switch语句;case 2下的break 2语句跳出switch语句和包含switch的while语句;default下的break 1语句和case 1下的break语句一样,只是跳出switch语句。其中,break后带的数字参数是指break要跳出的控制语句结构的层数。
使用continue关键字的作用是跳开当前的循环迭代项,直接进入下一个循环迭代项,继续执行程序。下面通过一个实例说明此关键字的作用。
【例2-27】使用continue关键字(实例文件:源文件\ch02\2.27.php)。
![](https://epubservercos.yuewen.com/C06CD9/23721570201955106/epubprivate/OEBPS/Images/Figure-P48_36847.jpg?sign=1739274071-SVpHq3CsqVHQcLhDsMzLdEOCIlsVU34l-0-e268b371a8ac7a95ba0f9425620b4121)
运行结果如图2-34所示。
![](https://epubservercos.yuewen.com/C06CD9/23721570201955106/epubprivate/OEBPS/Images/Figure-P48_4513.jpg?sign=1739274071-qDudoiwWrShaK4zLW5HyABxH65RMwcIF-0-55531130f06bbc9d88147bb55f19e2c5)
图2-34 使用continue关键字
其中,continue关键字在当n等于2的时候跳出本次循环,并且直接进入下一个循环迭代项,即n等于3。另外,continue关键字和break关键字一样,都可以在后面直接跟一个数字参数,用来表示跳开循环的结构层数。continue和continue 1相同,continue 2表示跳开所在循环和上一级循环的当前迭代项。