![PHP 从入门到项目实践(超值版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/705/27111705/b_27111705.jpg)
第4章 PHP流程控制语句
◎本章教学微视频:4个 29分钟
学习指引
PHP程序总是由若干条语句组成,其中有三种流程控制语句用以实现选择结构与循环结构,分别为条件控制语句、循环控制语句和跳转语句,本章将进行具体的介绍。合理地使用这些控制结构可以使程序流程清晰、可读性强,从而提高工作效率。
重点导读
- 掌握条件控制语句的使用。
- 掌握循环控制语句的使用。
- 熟悉跳转语句的使用。
- 了解文件包含的使用。
4.1 条件控制语句
![](https://epubservercos.yuewen.com/B097BE/15477656605638806/epubprivate/OEBPS/Images/Figure-P81_11070.jpg?sign=1738861914-gg3gzHv7AtClsk8JhywnYj2MtKxYacdI-0-72fbcbbe545794fca2d8a5ef96da02a4)
在编写程序时,有时需要根据不同的判断来执行对应的操作,这时就可以使用条件语句来完成它。条件控制语句主要有if、if...else、elseif和switch四种,下面分别进行介绍。
4.1.1 if语句
if条件语句用于仅当指定条件成立时执行代码。if条件语句的语法格式如下:
![](https://epubservercos.yuewen.com/B097BE/15477656605638806/epubprivate/OEBPS/Images/Figure-P81_11047.jpg?sign=1738861914-ska0HGq2EvsLZR2kXNlwnjLupkiAd0Bd-0-89824267ff7feeaae45af838ceb9d3ed)
如果条件的值为真,就按顺序执行statement语句,否则就跳过该语句往下执行。
当执行的语句为多条时,使用“{}”括起来,格式如下:
![](https://epubservercos.yuewen.com/B097BE/15477656605638806/epubprivate/OEBPS/Images/Figure-P81_73879.jpg?sign=1738861914-tV5nKnjO1NhaKea7a86nBIVe2AfaQBrU-0-13d8a50a7f108acbb5b95816b223aad4)
if语句的流程控制图如图4-1所示。
下面举一个例子,使用rand()函数生成一个随机的数$num,然后判断$num是不是偶数,如果是偶数输出$num的值和说明文字。
【例4-1】(实例文件:ch04\Chap4.1.php)if语句实例。
![](https://epubservercos.yuewen.com/B097BE/15477656605638806/epubprivate/OEBPS/Images/Figure-P82_73882.jpg?sign=1738861914-YvhwjbBZe1c0rwcN0RU7ntJJdgUNr2Ww-0-e9eb7e58daacd7a2a36ea1480f463ce8)
在IE浏览器中运行结果如图4-2所示。
![](https://epubservercos.yuewen.com/B097BE/15477656605638806/epubprivate/OEBPS/Images/Figure-P82_11131.jpg?sign=1738861914-zZlXSkR4j2f94cIqvGGR7XPnkZbeiGED-0-437f99293e4fc9dffceb1eea53f25b39)
图4-1 if语句的流程控制图
![](https://epubservercos.yuewen.com/B097BE/15477656605638806/epubprivate/OEBPS/Images/Figure-P82_11134.jpg?sign=1738861914-lGL2QyUQF6uLtztJ5RtMlZbBtQw6ERYG-0-63bf31d08fb24348291edef33df7c98e)
图4-2 if语句运行结果
提示:rand()函数用来生成一个随机数,格式为int rand(int mix,int max),该函数返回一个mix和max之间的随机数。如果没有参数,则返回0到RAND_MAX之间的随机整数。
4.1.2 if...else语句
if...else语句用来当条件成立时执行一块代码,条件不成立时执行另一块代码。语法格式如下:
![](https://epubservercos.yuewen.com/B097BE/15477656605638806/epubprivate/OEBPS/Images/Figure-P82_73883.jpg?sign=1738861914-voiN5TLsQY8xBQSGOL2xgiox5Ccvgp7p-0-c1da1a01251a3d592f9d896e86cd4156)
当条件成立时,执行statement1语句;当条件不成立时,执行statement2语句。
if...else语句的流程控制图如图4-3所示。
【例4-2】(实例文件:ch04\Chap4.2.php)if...else语句实例。
![](https://epubservercos.yuewen.com/B097BE/15477656605638806/epubprivate/OEBPS/Images/Figure-P82_73884.jpg?sign=1738861914-EoQETjSbidlWqQRmUDTcvk4QM2b5YO5e-0-8516d142423af04f7ecfd4ce6398b1c0)
在IE浏览器中运行结果如图4-4所示。
![](https://epubservercos.yuewen.com/B097BE/15477656605638806/epubprivate/OEBPS/Images/Figure-P83_11236.jpg?sign=1738861914-xm5ashVsIxCYylf2KMnR1REJshyob1mx-0-a43a9c0eae7f8dfd34285faedb1d67fc)
图4-3 if...else语句的流程控制图
![](https://epubservercos.yuewen.com/B097BE/15477656605638806/epubprivate/OEBPS/Images/Figure-P83_11239.jpg?sign=1738861914-O3SGnf2SRqhH46LX0hHUTAQaIkTRRuxH-0-dfd843f9760f9259f8b616d2ff87e5a8)
图4-4 if...else语句运行结果
4.1.3 elseif语句
if...else语句只能选择两种结果,当条件成立时执行一块代码,当条件不成立时,执行另一块代码。但当出现多个条件的时候,例如,有一个班级考试的成绩,老师划分等级:85分以上的,成绩优秀;60~85分之间的,成绩良好;低于60分的,则成绩不及格。在这种多个条件下,就需要使用elseif语句了。elseif也可以写成else if。
elseif语句的语法格式如下:
![](https://epubservercos.yuewen.com/B097BE/15477656605638806/epubprivate/OEBPS/Images/Figure-P83_73887.jpg?sign=1738861914-IVattCgokbqAgKdursAF2VndzMvtwEby-0-36086b4aece016278303e29a13564da6)
elseif语句的流程控制图如图4-5所示。
![](https://epubservercos.yuewen.com/B097BE/15477656605638806/epubprivate/OEBPS/Images/Figure-P83_11299.jpg?sign=1738861914-bh3n8V83UBPFtdRhu77bTHMhn9oBuRn3-0-8e8e896e7ed3c19f588f8c0b10f8c9c7)
图4-5 elseif语句的流程控制图
【例4-3】(实例文件:ch04\Chap4.3.php)elseif语句实例。
![](https://epubservercos.yuewen.com/B097BE/15477656605638806/epubprivate/OEBPS/Images/Figure-P84_11353.jpg?sign=1738861914-VSJZLuVdXhdMRMTowEks9gWciP2fMKoI-0-2913a060c1aad58930236769fe92ae5d)
在IE浏览器中运行结果如图4-6所示。
提示:elseif语句仅在之前的if语句和所有之前的elseif语句中条件成立时,并且当前的elseif语句条件成立时执行。
![](https://epubservercos.yuewen.com/B097BE/15477656605638806/epubprivate/OEBPS/Images/Figure-P84_11452.jpg?sign=1738861914-urrtJRCuKxhdiiG1tVFeswLYbUmh4rMH-0-4be887f2c418ff5af777647830ead023)
图4-6 elseif语句运行结果
4.1.4 switch...case多重判断语句
如果希望有选择地执行若干代码块之一,可以使用switch语句。switch语句的语法格式如下:
![](https://epubservercos.yuewen.com/B097BE/15477656605638806/epubprivate/OEBPS/Images/Figure-P84_73892.jpg?sign=1738861914-gVOIjpH3D41ZHN0CpGePKe4heD7LtPkW-0-4ebd9c52edda66f8a148df2e5869283b)
工作原理:switch语句首先进行一次计算,将表达式的值与结构中case的值进行比较,只有当一个case的值和switch表达式的值匹配时才开始执行语句。代码执行后,使用break来阻止代码跳入下一个case中继续执行,4.3.1节中将详细介绍break语句。default语句用于没有匹配到case时执行。
switch语句的流程控制图如图4-7所示。
![](https://epubservercos.yuewen.com/B097BE/15477656605638806/epubprivate/OEBPS/Images/Figure-P84_11444.jpg?sign=1738861914-VdesX2Syrg0hgZfwLf5td00B5fDsWi0Q-0-f0361a2d4b13486f2e1eda3bfbf5a09d)
图4-7 switch语句的流程控制图
【例4-4】(实例文件:ch04\Chap4.4.php)switch语句实例。
![](https://epubservercos.yuewen.com/B097BE/15477656605638806/epubprivate/OEBPS/Images/Figure-P85_73895.jpg?sign=1738861914-ITAiwMkcPq39b8nRT2ep2rnFYfwmtl5a-0-014bcff60d1f8f1361f65f7cca9a82c4)
在IE浏览器中运行结果如图4-8所示。
注释:在例4-4中,首先定义一个变量$fruit,值为“橘子”,把$fruit传入switch语句中,然后进行匹配,匹配到执行相应代码,匹配不到执行default。
提示:switch语句与elseif语句都可以进行多重选择,但是在不同的情况下运行的效率是不一样的。当被判断的值是常量(固定不变的值)时,switch语句的运行效率比elseif语句的运行效率高;当被判断值为变量,elseif语句的运行效率高于switch语句。
![](https://epubservercos.yuewen.com/B097BE/15477656605638806/epubprivate/OEBPS/Images/Figure-P85_11628.jpg?sign=1738861914-DSZ1VxTCnhmNkgrrXwQeNrZzBO3lyBfj-0-70d7d744c25dd8e2a134c949b33e1fa5)
图4-8 switch语句运行结果