流程控制概述
- 任何
PHP
脚本都是由一系列语句构成的。一条语句可以是一个赋值语句,一个函数调用,一个循环,甚至一个什么也不做的(空语句)条件语句。语句通常以分号结束。此外,还可以用花括号将一组语句封装成一个语句组。语句组本身可以当作是一行语句。 - 在任何一门程序设计语言中,都需要支持满足程序结构化所需要的三种基本结构:
- 顺序结构
- 分支结构(选择结构)
- 循环结构
分支结构
单一条件分支结构(if)
当条件表达式的值为真true
时,PHP
将执行语句组,相反条件表达式的值为假false
时,PHP
将不执行语句组,忽略语句组执行下面的语句。
1 | <?php |
双向条件分支结构(else从句)
if-else
条件判断与 if
条件判断类似,所不同的是,if-else
语
句的条件表达式值为真true
时,会执行 if
的本体语句语句组1,
而条件表达式值为假false
时,则执行 else
的本体语句语句组2。
1 | if(false){ // 真区间 |
多向条件分支结构(else if子句)
1 | <?php |
多向条件分支结构(switch语句)
当程序执行碰到switch
条件判断时,它会取出键值,然后与语句体中的case
所列出的值逐一比较,如果数值不符合,则将数值往下一个case
传递,如果数值符合,则执行case
中的语句,然后再碰到break
语句即跳出switch
条件判断,如果所有的值比对都不符合,则会执行default
中的语句 。
switch
语句使用注意事项:
switch
语句与if
语句不同,它仅能判断一种关系:是否恒等。switch
语句中case
子句的常量可以是整型常量、字符型常量、表达式或变量。- 在同一个
switch
中,case
子句的常量不能相同,否则第二个值永远无法匹配到。 case
和default
子句后面的语句序列允许由多个可执行语句组成,且不必用{ }
括起来,也可以为空语句。switch
语句中可省略break
语句和default
子句。但省略后会改变流程。1
2
3
4
5
6
7
8
9
10
11
12
13<?php
date_default_timezone_set("Etc/GMT-8"); //设置时区,中国大陆采用东八区的时间
$week = date("D"); //获取当前星期几
switch( $week ) {
case "Mon": echo "星期一"; break;
case "Tue": echo "星期二"; break;
case "Wed": echo "星期三"; break;
case "Thu": echo "星期四"; break;
case "Fri": echo "星期五"; break;
case "Sat": echo "星期六"; break;
case "Sun": echo "星期日"; break;
};
?>巢状条件分支结构
巢状式条件分支结构就是if
语句的嵌套,即指if
或else
后面的语句块中又包含if
语句。if
语句可以无限层地嵌套在其他if
语句,这给程序的不同部分的条件执行提供了充分的弹性。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17<?php
$a=88;
echo "数学成绩:".$a;
if($a>=60){
if($a>=70){
if($a>=90){
echo "不错喔!!这次数学成绩甲等!!";
}else{
echo "还可以...这次数学成绩乙等!!";
}
}else{
echo "勉勉强强及格边缘...这次数学成绩丙等!!";
}
}else{
echo "有待下次努力...数学成绩不及格!!";
}
?>
循环结构
while循环
当while
循环语句中表达式循环控制语句的结果为真时,程序将反复执行同一段程序:循环体while中的语句或语句序列,直到满足一定的条件表达式的结果为假时后才停止执行该段程序。
1 | <?php |
do while循环
序会先执行do
语句体中的语句循环体,然后再检查表达式循环控制语句的值,如果符合条件式值为真,就再进行do
语句体中的语句,直到条件不符合为止
do-while
后面必须加上分号作为结束do-while
与while
的最大区别是先执行循环体然后再判断循环的控制条件
示例1:求1-100的累加
1 | <?php //求1到100的累加。 |
示例2:使用while循环嵌套输出表格
1 | <!DOCTYPE html> |
fro循环
for
循环语句中表达式1为循环初始条件;表达式2为循环控制条件;表达式3为控制变量递增;语句或语句序列为循环体。
示例1:
1 | <!DOCTYPE html> |
特殊流程控制语句
break语句
我们之前在switch
条件判断中已经使用过break
关键字,它会使得程序流程离开switch
本体中的语句,如果break
使用在 for
、while
或 do-while
循环结构中时,将会使得程序跳出该层循环。
continue语句
continue
的作用与break
有点类似,continue
若使用在for
、while
或 do-while
循环结构中,当程序执行至continue
时,之后的语句将直接被略过,而直接执行下一次的循环动作。
exit()函数和die()函数
当前的脚本中只要执行到exit
语句,而不管它在哪个结构中都会直接退出当前脚本。exit
是一个函数,当前使用过的die()
函数就是exit()
的别名。可以带参数输出一条消息,并退出当前脚本。