《《细说php》第4章_php的流程控制结构》由会员分享,可在线阅读,更多相关《《细说php》第4章_php的流程控制结构(27页珍藏版)》请在金锄头文库上搜索。
1、第4章 PHP的流程控制结构,回顾,PHP中变量的数据类型都有哪些?常量的声明和应用?PHP中的运算符号都有哪些?,预习检查,PHP中的都有哪些分支结构?PHP中都有哪些循环结构?break和continue的区别?,本章任务,1. 分支结构2. 循环结构3. 特殊的流程控制语句,流程控制概述,任何 PHP 脚本都是由一系列语句构成的。一条语句可以是一个赋值语句,一个函数调用,一个循环,甚至一个什么也不做的(空语句)条件语句。语句通常以分号结束。此外,还可以用花括号将一组语句封装成一个语句组。语句组本身可以当作是一行语句。本章讲述了各种语句类型。 在任何一门程序设计语言中,都需要支持满足程序结
2、构化所需要的三种基本结构: 顺序结构 分支结构(选择结构) 循环结构 顺序结构:在程序结构中,最基本的就是顺序结构。程序会按照自上而下的顺序执行。由于结构简单所以这里我就不多介绍,1. 分支结构,1.1 单一条件分支结构(if) 1.2 双向条件分支结构(else从句) 1.3 多向条件分支结构(elseif子句) 1.4 多向条件分支结构(switch语句) 1.5 巢状条件分支结构,1.1 单一条件分支结构(if),单个if语句:基本格式:if(条件表达式)语句组; /语句组为单条语句时可省略“ ”。当条件表达式的值为真(true)时,PHP将执行语句组,相反条件表达式的值为假(false
3、)时,PHP将不执行语句组,忽略语句组执行下面的语句。, $b)echo “a 大于 b“;/如果变量a的值大于b的值则会输出:a大于b$x=10;$y=20;if($x$y);/输出:bool(true) ?,1.2 双向条件分支结构(else从句),ifelse语句:格式如下if(条件表达式)语句组1else 语句组2 /语句组为单条语句时可省略“ ”。if-else 条件判断与 if 条件判断类似,所不同的是,if-else 语 句的条件表达式值为真(true)时,会执行 if 的本体语句(语句组1), 而条件表达式值为假(false)时,则执行 else 的本体语句(语句组2)。,1.
4、3 多向条件分支结构(elseif子句),elseif子句:格式如下if(条件表达式1)语句块1elseif(条件表达式1) 语句块2 . . elseif(条件表达式n)语句块nelse语句块n+1,?php date_default_timezone_set(“Etc/GMT-8“); /设置时区,中国大陆采用东八区的时间echo “当前时间“.date(“Y-m-d H:i:s“,time().“ “; /通过date()函数获取当前时间,并输出$hour = date(“H“); /获取服务器时间中当前的小时,作为分时问候的条件if( $hour 6 ) /如果当前时间在6点以前,执行
5、下面的语句块echo “凌晨好!“; elseif ( $hour 9 ) /如果当前时间在6点之后和9点以前,执行下面的语句块echo “早上好!“; elseif ( $hour 12 ) /如果当前时间在9点之后和12点以前,执行下面的语句块echo “上午好!“; elseif ( $hour 14 ) /如果当前时间在12点之后和14点以前,执行下面的语句块echo “中午好!“; elseif ( $hour 17 ) /如果当前时间在14点之后和17点以前,执行下面的语句块echo “下午好!“; elseif ( $hour 19 ) /如果当前时间在17点之后和19点以前,执
6、行下面的语句块echo “傍晚好!“; elseif ( $hour 22 ) /如果当前时间在19点之后和22点以前,执行下面的语句块echo “晚上好!“; else /如果当前时间在22点之后和次日1点以前,执行下面语句块echo “夜里好!“;,2.4 多向条件分支结构(switch子句),switch- case语句语法:switch(表达式)case 值1:语句序列1; break; case 值2:语句序列2; break;default:语句序列 n; break;,执行语句序列1,=值1?,计算表达式的值,相等,不相等,break,执行语句序列2,=值2?,相等,不相等,br
7、eak,执行语句序列n,有default?,有,没有,当程序执行碰到switch条件判断时,它会取出键值,然后与语句体中的case所列出的值逐一比较,如果数值不符合,则将数值往下一个case传递,如果数值符合,则执行case中的语句,然后再碰到break语句即跳出switch条件判断,如果所有的值比对都不符合,则会执行default中的语句 。 switch语句使用注意事项: switch语句与if语句不同,它仅能判断一种关系:是否恒等。 switch语句中case子句的常量可以是整型常量、字符型常量、表达式或变量。 在同一个switch中,case子句的常量不能相同,否则第二个值永远无法匹配
8、到。 case 和 default 子句后面的语句序列允许由多个可执行语句组成,且不必用“ ”括起来,也可以为空语句。 switch语句中可省略break语句和default子句。但省略后会改变流程。,=60)if($a=70)if($a=90)echo “不错喔!这次数学成绩甲等!“;else echo “还可以.这次数学成绩乙等!“; elseecho “勉勉强强及格边缘.这次数学成绩丙等!“;elseecho “有待下次努力.数学成绩不及格!“; ?,2. 循环结构,2.1 while语句 2.2 do.while循环 2.3 for语句 2.4 特殊的流程控制语句,2.1 while语
9、句,while循环语法:while(表达式)语句或语句序列. . 当while循环语句中表达式(循环控制语句)的结果为真时,程序将反复执行同一段程序:循环体( while中的语句或语句序列),直到满足一定的条件(表达式的结果为假时)后才停止执行该段程序。,实例: ,使用while循环嵌套输出表格使用while循环嵌套输出表格”; /执行一次则输出一行并指定背景颜色$in = 0; /内层循环需要计数的累加变量while( $in “.($out*10+$in).“; /执行一次,输出一个单元格$in+; /内层的计数变量累加echo “; /输出行关闭标记$out+; /外层的计数变量累加?,
10、基本格式:do语句或语句序列. .while(表达式);,程序会先执行 do 语句体中的语句(循环体),然后再检查表达式(循环控制语句)的值,如果符合条件式(值为真),就再进行 do 语句体中的语句,直到条件不符合为,2.2 do.while循环,注意: do-while 后面必须加上分号作为结束 do-while与while的最大区别是先执行循环体然后再判断循环的控制条件 ,基本格式:for(表达式1;表达式2;表达式3)语句或语句序列;for循环语句中表达式1为循环初始条件;表达式2为循环控制条件;表达式3为控制变量递增;语句或语句序列为循环体。,2.3 for语句, $i 次循环执行输出
11、的结果“; $i = 1; /将for语句中第一部分初始化提出来,放到for前面执行,但for语句中的分号要保留for( ; $i $i 次循环执行输出的结果“; $i = 1; /再将第三部分的增量提出来,放到for语句的执行体最后,但也要将分号保留for( ; $i $i 次循环执行输出的结果“;$i+; $i = 1;for( ; ; ) if( $i 10 )break;echo “这是第 $i 次循环执行输出的结果“;$i+; ,2.4 特殊流程控制语句1. break 我们之前在 switch 条件判断中已经使用过 break 关键字,它会使得程序流程离开 switch 本体中的语句,如果 break 使用在 for、while 或 do-while 循环结构中时,将会使得程序离开该层循环。 2. continuecontinue 的作用与 break 有点类似,continue 若使用在 for、while 或 do-while循环结构中,当程序执行至 continue 时,之后的语句将直接被略过,而直接执行下一次的循环动作。 3. exit当前的脚本中只要执行到exit语句,而不管它在哪个结构中都会直接退出当前脚本。exit是一个函数,当前使用过的die( )函数就是exit( )的别名。可以带参数输出一条消息,并退出当前脚本。,