您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > PHP教程之流程控制
52第二章流程控制大多数复杂的程序设计都离不开流程控制语句,这些语句决定了我们程序的走向。在PHP中一共包含了3种控制结构:顺序结构、选择结构和循环结构。在多数情况下程序都不会简单地使用一种结构,一段程序可能会同时包含两种或3种控制结构。PHP中的流程控制语句可分为如下几类。条件语句:if/else/elseif、switch。循环语句:foreach、while、dowhile、for。跳转语句:break、continue。下面将详细介绍这些控制语句的应用。第一节条件语句条件语句又分支语句,在PHP程序设计中,条件语句主要由if/elseif/else这3个组合语句,以及switch语句构成。下面将详细介绍这些语句的使用方法。一、if、elseif和else条件语句if、elseif和else语句经常会被一起使用,这3个语句中只有if可以单独使用,而elseif和else语句则需要与if语句结合使用。1、if条件语句If条件语句是单一条件选择语句,PHP程序中的语句通常是按其在源代码文件中出现顺序从前到后依次执行的。而if语句用于改变语句的执行顺序,是很多语言,包括PHP在内最重要的特性之一。if语句的基本格式是,对一个表达式进行计算,根据计算结果决定是否执行后面的语句。if语句的格式如下:if(表达式){如果表达式的值为true执行的语句;}在上面if语句的格式中,if后面小括号中的“表达式”就是执行的条件,条件只能是布尔型值。通常是由比较运算符或者逻辑运算符组成的表达式所计算的结果值,或是一些返回布尔型的函数等。如果是传入其他类型的值也会自动转换为布尔型的TRUE或FALSE。如果“表达式”为TRUE,则执行花括号中的语句,否则不执行。不论结果如何,接下来都将执行if后面的语句。应用if语句的示例代码如下。53?php$age=21;if($age20){echo'正在上大学';}?在浏览器中输出为:正在上大学当if的执行语句只有一行时可以省略花括号{},但是为了提高代码的可读性,建议加上花括号。2、if…else条件语句if…else语句是双向条件选择语句,经常需要在满足某个条件时执行一条语句,而在不满足该条件时执行其他语句,这正是else子句的功能。else延伸了if语句,可以在if语句中的表达式的值为FALSE时执行语句。这里要注意一点,else语句是if语句的从句,必须和if一起使用,不能单独存在。if…else语句的格式如下所示:if(表达式){如果表达式的值为true执行的语句;}else{如果表达式的值为false执行的语句;}在上面的格式中,如果“表达式”为真,执行if后面的执行语句体1;如果“表达式”为假,则执行else后面的执行语句体2。“语句体1”和“语句体2”都可以是复合语句,如果是复合语句必须使用花括号“{}”括起来。应用if…else语句的示例代码如下。?php$age=18;if($age20){echo'正在上大学';54}else{echo'还没有上大学';}?在浏览器中输出为:还没有上大学3、if…elseif…else条件语句if…elseif…else多重条件选择语句,是if和else的组合。和else一样,它延伸了if语句,elseif子句会根据不同的表达式值确定执行哪个语句块。在PHP中也可以将elseif分开成两个关键字“elseif”来使用。if…elseif…else语句的语法格式如下所示:if(表达式1){如果表达式1的值为true执行的语句;}elseif(表达式2){如果表达式1的值为false、表达式2的值为true执行的语句;}elseif(表达式3){如果表达式1的值为false、表达式3的值为true执行的语句;...}elseif(表达式n){如果表达式1的值为false、表达式n的值为true执行的语句;}else{如果所有表达式的值都为false执行的语句}在上面的elseif的语法中,如果第一个“表达式1”为TRUE,则执行if后面的执行语句体1;否则转入后面elseif语句,判断第二个“表达式2”,如果为TRUE,则执行该elseif后面的执行语句体2;否则,以此类推,继续往后面判断,如果表达式的条件都没有TRUE,则执行else子语中的执行语句体,当然最后的else语句也可以省略。应用if…elseif…else语句的示例代码如下。55?phpdate_default_timezone_set(Etc/GMT-8);//设置时区$hour=date(H);//获取服务器中当前的时间if($hour6){echo'凌晨好!';}elseif($hour9){echo'早晨好!';}elseif($hour12){echo'上午好!';}elseif($hour14){echo'中午好!';}elseif($hour19){echo'下午好!';}elseif($hour22){echo'晚上好!';}else{echo'晚安!';}?在浏览器中输出为:晚上好!在浏览器中输出的语句会根据测试的时间不同而不同。此外,if条件语句还可嵌套使用,即指if或else后面的语句块中又包含if语句。if语句可以无限层地嵌套在其他if语句中,这给程序的不同部分的条件执行提供了充分的弹性。是程序设计中经常使用的技术。语法格式如下所示:if(表达式1){if(表达式2){如果表达式2的值为true执行的语句;}else{56如果表达式2的值为false执行的语句;}}else{if(表达式3){如果表达式3的值为true执行的语句;}else{如果表达式3的值为false执行的语句;}}当流程进入某个选择分支后又引出新的选择时,就要用嵌套的if语句。对于多重嵌套if,最容易出现就是if与else的配对错误,嵌套中的if与else的配对关系非常重要。从最内层开始,else总是与他上面相邻最近的不带else的if配对。在使用if语句的嵌套时,避免if与else配对错位的最佳办法是加花括号,同时,为了便于阅读,使用适当的缩进。if条件语句嵌套使用的例子如下:?php$sex=MEN;$age=48;if($sex==MEN){if($age=60){echo'这位先生已经退休'.($age-60).'年了。';}else{echo'这位先生还有'.(60-$age).'年才退休。';}}else{if($age=55){echo'这位女士已经退休'.($age-55).'年了。';}else{echo'这位女士还有'.(55-$age).'年才退休。';57}}?在浏览器中输出为:这位先生还有12年才退休。二、switch条件语句switch语句和if…elseif…else相似,都是一种多重条件选择语句,但if…elseif…else语句是根据表达式的布尔值作为判断条件来进选择相应的执行语句;而switch语句则是测试一个表达式的值,并根据测试的结果来选择相应的执行语句,从而实现流程控制。switch语句由一个控制表达式和多个case标签组成,case标签后紧跟一个代码块,case标签作为这个代码块的标识。switch语句的语法格式如下:switch(表达式){case值1:符合值1的执行语句;break;case值2:符合值2的执行语句;break;...case值n:符合值n的执行语句;break;default:所有值都不符合的执行语句}当switch语句被调用的时候,会按照从上到下的顺序依次遍历每一个case语句。如果case语句的值与switch指定的表达式匹配,则执行case语句内部代码,否则继续向下遍历。如果所有的case语句值与switch指定表达式都不匹配,则58执行default语句体内的代码。使用switch语句的示例代码如下。?php$week=date(D);//获取当前的星期值switch($week){caseMon:echo'今天是星期一,得上班了。';break;caseTue:echo'今天是星期二,继续上班。';break;caseWed:echo'今天是星期三,继续上班。';break;caseThu:echo'今天是星期四,继续上班。';break;caseFri:echo'今天是星期五,还得上班。';break;default:echo'周末到了,该好好休息了。';}?在浏览器中输出为:周末到了,该好好休息了。在浏览器中输出的语句会根据测试的时间不同而不同。在使用switch语句时我们应该注意以下儿点:A、和if语句不同的是,switch语句后面的控制表达式的数据类型只能是整型或59是字符串,不能是Boolean型。通常这个控制表达式是一个变量名称,虽然PHP是弱类型语言,在switch后面控制表达式的变量可以是任意类型数据,但为了保证匹配执行的准确性,最好只使用整型或是字符串中的一种类型。B、和if语句不同的是,switch语句后面的花括号是必须有的。而switch语句中各case标签前后代码块的开始点和结束点非常清晰,因此完全没有必要在case后代码块加花括号。C、case语句的个数没有规定,可以无限的增加。但case标签和case标签后面的值之间应有一个空格,值后面必须有一个冒一号,这是语法的一部分。D、switch匹配完成以后,将依次逐条执行匹配的分支模块中的语句,直到switch结构结束或者遇到了break语句才停止执行。所以,如果一个分支语句的后面没有写上break语句,则程序会继续向下遍历每个case语句。E、与if语句中else类似,switch语句中default标签直接在后面加上一个冒号,看似没有条件,其实是有条件的,条件就是“表达式”的值不能与前面任何一个case标签后的值相等,这时才处理default分支中的语句。default标签和if中的else子句一样,它不是switch语句中必须的,可以省略。第二节循环语句在PHP中循环语句包括while/do…while循环,for循环及foreach循环3种形式,在PHP中提供了两种类型的循环语句:一种是计数型循环语句,通常使用for循环语句完成。另一种是条件型循环语句,通常使用while或是do…whife循环语句完成。计数型循环语句是指按指定的次数执行循环,例如在游戏中指定一个机器人走100步停止,就只反复执行走路的代码100次。条件型循环语句是指遇到特定的条件才停止循环,循环的次数是不固定的。例如,在游戏中指定一个机器人走路,当遇到障碍物时停止,这样循环走路的代码就不是固定次数的执行。另外还需特别注意,在循环体内应包含趋于结束的语句(即循环变量值的改变),否则就可能成了一个死循环,这是初学者的一个常见错误。所以使用循环时一定要有一个停止的条件,根据循环停止的条件不同。下面将介绍这几种不同循环语句的实现方式。一、while和do…while循环语句60while和do…while语句都是用来处理循环流程的,while语句会先判断表达式是否成立,如果成立则执行while语句体内的代码,否则跳出循环;而do…while语句则是先执行do语句体内的代码,然后去判断表达式是否成立,如果成立则继续下次循环,否则跳出循环。1、while循环语句while语句与if语句相同,也需要使用逻辑运算符作为判断条件,当条件为真时,它不断地执行一个执行语句,直到条件为假为止。if语句只执行后续代码一次,而while循环中只要条件为真,就会不断地执行后续的代码。while循环通常用于控制循环次数未知的循环结构。while语句的应用格式如下:初始值;while(表达式){执行语句;递增/递减规则;}其中while语句中“表达式”的计算结果一定要是布尔型的TRUE值或FALSE值,如果是其他类型的值也会自动转换为布尔类型的值。通常这个表达式是使用比较运算符或者逻辑运算符计算后的值。“执行语句”是一条语句或一个复合语句(代码块)
本文标题:PHP教程之流程控制
链接地址:https://www.777doc.com/doc-637870 .html