分支语句
无论在何种编程语言中,流程控制都是很重要的内容。由于 PHP 的大部分语法都继承了C语言的特点,
因此在流程控制方面,PHP 有着和C语言类似的流程控制。
if else 语句是流程控制中根据条件判断执行的一种。该语句执行时先对条件进行判断,然后根据判断结
果做出相应的操作。它又可以细分为三种,分别是 if 语句、if…else 语句、if…else if…else 语句。
- if 语句
if 语句是流程控制中最简单的一种。只判断某个条件是否为真,如果为真就执行特定的语句块。语法格
式如下
if (判断条件) {
语句块;}
如果需要执行的语句块包含一条以上的语句,则要使用{ }把 它们括起来,表示一个整体;如果要执行的
语句只有一条,就可以省略大括号标记。像下面这样
if (判断条件)
一条语句;
<?php
//定义一个数字,使用 if 语句判断这个数字是不是偶数,$num = 34;if ($num % 2 == 0) {echo '$num ='.$num.', 是偶数!';}?>
if…else 语句
if 语句只能对判断结果为真的情况执行操作,这在很多情况下是不够的,于是就有了 if…else 这种形式的
语句。与 if 判断不同,if…else 语句不仅对判断结果为真的情况执行操作,对非真的情况也可以执行相应
的操作。
else 语句延伸了 if 语句,可以在 if 语句中表达式的值为 FALSE 时执行相应的语句。另外需要注意的
是,else 语句是 if 语句的从句,必须和 if 语句一起使用,不能单独存在。
if (判断条件) {
语句块 1;} else {
语句块 2;}
在上面的格式中,如果“判断条件”为真,则执行“语句块 1”;否则执行“语句块 2”。“语句块 1”和“语句块
2”都可以包含多条语句。与 if 语句相同的是,如果“语句块 1”和“语句块 2”中都只包含一条语句的话,可
以省略大括号{ }.
<?php$num = rand(1,31); //生成一个 1~31 之间的随机数if ($num % 2 == 0) {echo '$num ='.$num.', 是偶数!';} else {echo '$num ='.$num.', 是奇数!';}?>
if…else if…else 语句
else if 语句和 else 语句一样,它延伸了 if 语句,else if 语句会根据不同的表达式来确定执行哪个语句
块
if (判断条件 1) {语句块 1;} else if (判断条件 2) {语句块 2;} else if (判断条件 3) {语句块 3;}......else if (判断条件 n) {
语句块 n;}else{
语句块 n+1;}
在上面的 else if 的语法中,如果第一个“判断条件 1”为 TRUE,则执行“语句块 1”语句;如果第二个“判断
条件 2”为 TRUE,则执行“语句块 2”语句;以此类推。如果表达式的条件都不为 TRUE,则执行 else 子句
中的“语句块 n+1”语句,当然最后的 else 语句也可以省略。
在 else if 语句中同时只能有一个表达式为 TRUE,即在 else if 语句中只能有一个语句块被执行。如果有
多个表达式的值为 TRUE 时,只会执行第一个表达式所对应的语句块。
<?php$score = 89;
if ($score > 90) {echo '成绩的级别为:优!';} else if ($score > 70) {echo '成绩的级别为:良!';} else if ($score > 60) {echo '成绩的级别为:中!';} else {echo '成绩的级别为:差!';}?>
switch
switch 语句和 if…else if…else 语句相似,也是一种分支结构,与 if…else if…else 语句相比 switch 语句
更加简洁明了。
switch 语句由一个表达式和多个 case 标签组成,case 标签后紧跟一个代码块,case 标签作为这个代码
块的标识。
switch(表达式){case 值 1:
语句块 1;break;case 值 2:
语句块 2;break;... ...case 值 n:
语句块 n;break;default:
语句块 n+1;}
switch 语句根据表达式的值,依次与 case 中的值进行比较,如果不相等,继续查找下一个 case;如果
相等,就会执行对应的语句,直到 switch 语句结束或遇到 break 为止。
一般来说,switch 语句最终都有一个默认值 default,如果在前面的 case 中没有找到相符的条件,则执
行默认语句,和 else 语句类似。
和 if 语句不同的是,switch 语句后面表达式的数据类型只能是整型或字符串,不能是 bool 型。通
常这个表达式是一个变量名称,虽然 PHP 是弱类型语言,在 switch 后面表达式的变量可以是任意
类型数据,但为了保证匹配执行的准确性,最好只使用整型或字符串中的一种类型。
和 if 语句不同的是,switch 语句后面的花括号是必须有的。
case 语句的个数没有规定,可以无限增加。但 case 标签和 case 标签后面的值之间应该有一个空
格,值后面必须有一个冒号,这是语法的一部分。
switch 匹配完成以后,将依次逐条执行匹配的分支模块中的语句,直到 switch 结构结束或者遇到
了 break 语句才停止执行。所以,如果一个分支语句的后面没有写上 break 语句,程序将会继续
执行下一个分支语句的内容。
与 if 语句中的 else 类似,switch 语句中 default 标签直接在后面加上一个冒号,看似没有条件,
其实是有条件的,条件就是“表达式”的值不能与前面任何一个 case 标签后的值相等,这时才执行
default 分支中的语句。default 标签和 if 中的 else 子句一样,它不是 switch 语句中必需的,可以
省略
<?php$week = date('D');
##
循环语句
循环语句可以在满足条件的情况下反复执行某一个操作。在 PHP 中提供了 4 个循环控制语句,分别是
while、do while、for 和 foreach(主要用于遍历数组)循环语句。1. while 循环
while 循环的作用是反复执行某一项操作,是循环语句中最简单的一个。该语句的特点是:先判断表达
式,当表达式结果为真时执行相应的语句。
while 循环的语法格式如下: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;}?>
- while循环
while 循环的作用是反复执行某一项操作,是循环语句中最简单的一个。该语句的特点是:先判断表达
式,当表达式结果为真时执行相应的语句。
while (表达式) {
语句块;}
当表达式的值为真时,将执行循环体内的 PHP 语句块,执行结束后,再返回到表达式继续进行判断,判
断为真时继续执行语句块中的代码,直到表达式的值为假时才跳出循环。
while 循环中“表达式”的计算结果一定要是布尔型的 TRUE 或 FALSE,如果是其他类型的值也会自动转换
为布尔类型的值。通常这个表达式是使用比较运算符或者逻辑运算符计算后的值。“语句块”是一条语句
或一个复合语句(代码块)。当 while 循环语句中只有一条语句时可以将包裹代码块的大括号{ }省略。
如果是多条语句的代码块,则一定要使用大括号{ }包裹起来。
<?php$num = 1;while($num <= 10) {echo $num.($num == 10 ? '' : ', ');$num++;}?>
do while 循环
do while 和 while 循环非常相似,区别在于 do while 循环的表达式是在每次循环结束时检查而不是在
开始时,而且不论表达式的结果如何 do while 循环语句都会执行一次,因为表达式的值是每次循环结束
后才检查的。而在 while 循环中就不同了,表达式的值在循环开始时检查,如果一开始就为 FALSE,则
整个循环立即终止。
do {
语句块;} while (表达式);
其中 while 语句中“表达式”的计算结果也一定要是布尔型的 TRUE 或 FALSE。“语句块”也可以是一条语句
或一个复合语句(代码块)。当 do while 语句语句块中只有一条语句时,也可以省略大括号{ }。
注意:使用 do while 时最后一定要有一个分号;,分号也是 do while 循环语法的一部分。
do while 循环语句的执行流程是:先执行一次循环体中的语句块,然后判断表达式的值,当表达式的值
为 TRUE 时,返回重新执行循环体中的语句块,如此反复,直到表达式的值等于 FALSE 为止,此时循环
结束。其特点是先执行循环体,然后判断循环条件是否成立。
<?php$sum = 0;$i = 1;do {$sum += $i;$i++;} while ($i <= 50);echo '1 + 2 + 3 +...+ 49 + 50 = '. $sum;?>
for循环
for 循环是 PHP 中最复杂的循环结构。for 循环语句能够按照已知的循环次数进行循环操作,适用于明
确知道执行次数的情况。
for 循环的格式和前面介绍的while 和 do while 两种循环语句不一样,for 循环将控制循环次数的变量预
先定义在 for 语句中。虽然 for 循环是 PHP 中最复杂的循环结构,但使用起来非常方便。
for (初始化表达式; 条件判断; 变量更新) {
循环体;}
参数说明如下:
·初始化表达式:通常用于声明一个计数器的初始值,即循环开始的值;
·条件判断:用于控制是否执行循环体中的代码,如果条件为 FALSE ,则立即退出循环;
·变量更新:循环每执行一次,马上修改计数器的值;
·循环体:条件判断为真时,需要执行的若干代码。
通过 for 循环来计算 100 的阶乘
<?php$sum = 1;for ($i = 1; $i <= 100; $i++) {$sum *= $i;}echo '100! = '.$sum;?>
for 循环语句也可以像 while 语句一样嵌套使用,即在 for 循环语句中包含另外的一个或多个 for 循环语
句。通过对 for 循环语句进行嵌套,可以完成一些复杂的编程。比如打印九九乘法表
<?phpfor ($i = 1; $i <= 9; $i++) {for ($j = 1; $j <= $i; $j++) {echo $j.' * '.$i.' = '.$i*$j.' ';}echo '<br>';}?>