这节课我们学习 php 的选择语句,选择语句用于使程序在不同的条件下执行不同的语句。PHP 中的选择语句有 if 语句和 switch 语句。
1、if 语句
if 语句也称为条件语句。它有多种使用形式,包括 if 形式、if…else 形式和 if…elseif…else 形式,下面分别介绍这些形式的使用。
if 形式是 if 语句最基本的形式,它的语法结构如下所示:
if (表达式)
语句 1;
如果表达式的值为 TRUE,则执行语句 1,为 FALSE 则执行语句 1 之后的语句,这里的语句 1 可以是一个语句,也可以是一个复合语句。如果是复合语句,必须带有花括号。该结构的流程如下图所示。
我们通过下面代码来演示 if 选择语句的 if 形式用法。
<?php $x=6; //初始化两个变量 $y=7; if($y>$x) //比较运算结果为 TRUE $x=$y; //该语句将$y 的值赋值给$x echo "两个变量中比较大的值是$x 。"; //输出两个变量中比较大的值 ?>
代码运行结果:两个变量中比较大的值是 7。
以上代码的作用就是输出两个变量中比较大的值,如果变量 y 的值小于变量 x,则赋值语句不会被执行。通过 if 语句来保证$x 值永远为最大的。
2、if…else 形式
if…else 形式的语法结构如下所示:
if (表达式)
语句 1;
else
语句 2;
如果表达式的值为 TRUE,则执行语句 1,为 FALSE 则执行语句 2,该结构的流程如图所示。
<?php $x=16; //初始化两个变量 $y=17; if($x>$y) //进行比较运算并根据比较结果执行对应的语句 echo "两个变量中比较大的值是$x"; else echo "两个变量中比较大的值是$y"; ?>
代码运行结果:两个变量中比较大的值是 17
由于变量 y 的值要大于变量 x 的值,因此 else 下的语句被执行。
3、if…elseif…else
if…elseif…else 的语法结构如下所示:
if (表达式 1)
语句 1;
elseif(表达式 2)
语句 2;
else
语句 3;
注意:以上语法结构中的 elseif 项可以有若干个,这里只列出了最基本的形式。该语法结构中的 else 从句是可选的。
这种结构从上到下逐个对条件进行判断,一旦条件满足或者遇到 else 从句就执行与相关的语句,并跳过结构中其他代码。该结构的流程图如图所示。
<?php $score=90; //定义一个分数变量并初始化 if($score>=90&&$score<=100) //对分数进行判断并输出对应评价 echo '这是一个优秀的成绩。'; elseif($score>=80&&$score<90) //对分数进行判断并输出对应评价 echo '这是一个良好的成绩。'; elseif($score>=60&&$score<80) //对分数进行判断并输出对应评价 echo '这个成绩需要努力。'; elseif($score<60&&$score>=0) //对分数进行判断并输出对应评价 echo '这个成绩非常糟糕!'; else //不满足以上任何一个条件则输出合法性提示 echo '请确定成绩的合法性。'; ?>
输出结果:
这是一个优秀的成绩。
当$score=59 时,由于分数在 0~59 之间,因此第 10 行代码会被执行。当$score 为一个大于 100 或者小于 0 的数值时,default 后的语句会被执行。
4、if 语句嵌套
选择语句可以嵌套,也就是在一个选择结构中存在另一个选择结构,这是经常碰到的情况,但也是容易出错的地方,原因常出现在 if 和 else 的匹配问题。PHP 中的 else 总是会与最近的 if 匹配。我们首先来看一个使用正确嵌套的示例。
<?php $operator='/'; //定义一个变量并初始化 $x=15; //定义两个操作数并初始化 $y=10; if($operator=='+') //判断运算符并执行相应运算 echo "$x+$y=".($x+$y); elseif($operator=='-') echo "$x-$y=",$x-$y; elseif($operator=='*') echo "$x*$y=".$x*$y; elseif($operator=='/'){ if($y==0) //循环嵌套,判断除法中的除数是否为 0 echo '除数为 0,计算错误!'; else echo "$x/$y=".$x/$y; } else echo '请输入一个正确的运算符!'; ?>
代码运行结果:
除数为 0,计算错误!
以上代码的其他情况我们可以通过更改相应变量来查看,这里陌小雨就不做演示了。
5、switch 语句
switch 语句用来实现按照不同的情况执行不同的语句。switch 语句常用于对变量的不同取值执行不同的语句。if…else…if 形式也可以用来实现类似的功能,但是它则常用于针对变量的一个范围执行不同的语句,它的一般形式如下所示:
switch (表达式)
{
case 常量 1:
语句 1 或空;
break;
case 常量 2:
语句 2 或空;
break;
…
case 常量 n:
语句 n 或空;
break;
default:
语句 n+1 或空;
}
switch 语句执行时,首先计算表达式的值,并将它与每一个 case 后的常量进行比较。如果与某个常量相等,则执行对应的语句,遇到 break 语句则退出 switch 结构,否则就一直向下执行直到遇到 break 或者 default。结构中的 default 不是必须有的,它用来匹配 case 情况之外的所有情况。switch 语句的程序流程如图所示。
<?php $week=0; //定义并初始化星期变量 switch($week){ case 0: //变量为 0 的情况 echo '星期日。'; break; case 1: //变量为 1 的情况 echo '星期一。'; case 2: //变量为 2 的情况 echo '星期二。'; break; case 3: //变量为 3 的情况 case 4: //变量为 4 的情况 echo '星期三或者星期四。'; break; case 5; //变量为 5 的情况 echo '星期五。'; break; default: //变量为以上 case 之外的所有情况 echo '星期六。'; } ?>
以上代码中变量值为 0,因此运行结果会输出变量为 0 的情况。
代码输出结果:星期日。
我们将代码中的 week 变量值设置为 1 后运行。
代码输出结果:星期一。星期二。
以上运行结果输出了两个星期,是因为代码中的 case 下的语句中没有 break 语句,因此程序无条件执行变量为 2 的情况下语句并遇到 break 后停止。
我们再将代码中 week 变量设置为 3 或者 4 后运行。
代码运行结果:星期三或者星期四。
变量为 3 或者 4 的运行情况是相同的,因为变量为 3 的情况下没有任何语句,因此他会无条件执行后面情况下的语句直到遇到 break。
我们再将变量改为除 0~5 之外的任意类型值运行,这些值都会匹配 default 值。
代码运行结果:星期六。
下一节课,我们来学习 php 中的循环语句。