这节课我们学习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中的循环语句。