条件语句
在程序开发过程中,经常需要根据不同的情况,执行不同的代码,这个时候就需要用到条件判断,在PHP中,可使用if或者switch进行条件判断,具体应根据实际场景进行选择相应的条件语句:
1、if条件语句
最基础的条件判断语句:
if(条件){
代码块
}
只进行一次条件判断,使用场景:只需要判断是否满足if语句中条件的是否满足,若条件为真,则执行代码块中的内容;否则,继续执行if相关语句之外的部分。
示例:“如果你赢了他,那我给你一百块”。在这个条件语句中,“我给你一百块”这个行为的前提条件是“你赢了他”,如果条件满足了,“我”才“给你一百块”。否则,什么也不会发生。
2、if...else...条件语句
基础条件语句完整版:
if(条件){
代码块一
}else{
代码块
}
只进行一次条件判断,使用场景:只需要判断是否满足if语句中条件的是否满足,若条件为真,则执行代码块中的内容;否则,执行else中的代码块。
示例:“如果你赢了,那我给你一百块,否则你给我一百块”。在这个条件语句中,“我给你一百块”这个行为的前提条件是“你赢了”,如果条件满足了,“我给你一百块钱”。否则,就是“你给我一百块”。
3、if...elseif...else...条件语句
多条件判断语句,在PHP语句中elseif()等效于elseif():
if(条件一){
代码块一
}elseif(条件二){
代码块二
}......
else{
代码块
}
可进行多次条件判断,使用场景:若要进行多次判断,可多次使用elseif语句,若满足相应的条件,则执行对应的代码块,若所有的条件都不满足,则执行else中的代码块。
示例:“如果你成绩在70以上,奖励你一百块;80以上,奖励五百块;90以上,奖励一千;否则什么都不奖励”。在这个条件语句中,当你成绩大于70,奖励一百块,大于80是五百,大于90是一千;否则,什么都没有。
注意:虽然以上示例听上去似乎没有什么问题,但是如果你的成绩是92,计算机并不会直接去判断你的成绩是否大于90,而是根据你写的代码自上而下执行,如:
//错误代码实例
$score=92;
if($score70){
echo奖励一百块;
}elseif($score80){
echo奖励五百块;
}elseif($score90){
echo奖励一千块;
}else{
echo没有奖励;
}
上述代码中,虽然成绩为92,按照人的思维,应该是“奖励一千块”,但是计算机并不会这么觉得,因为它在执行第一个条件判断$score70时,条件已经满足,这个时候它会执行输出“奖励一百块”,然后结束条件判断。
若想要达到我们想要的结果,我们还需要对其修正,既要判断是否大于70,也要判断是否不大于下一个阶段的需求:
$score=92;
if($score70$score=80){
echo奖励一百块;
}elseif($score80$score=90){
echo奖励五百块;
}elseif($score90){
echo奖励一千块;
}else{
echo没有奖励;
}
在遇到类似这种情况时,我们可以使用switch语句进行判断。
4、switch...case...条件语句
switch...case...语句:判断switch中的量,与case后的值是否相等,若相等则执行相应代码段,若所有case比较结果都为假,则执行default中的代码段。
switch($i){
casestr1:
代码段1
break;
casestr2:
代码段2
break;
default:
代码段
}
注意:每一个case都要使用break关键字阻断代码继续执行(需要全部执行的特殊情况例外),否则当有一个case的判定结果为真时,真结果后面的所有case和default都会被执行:
//错误示例,未使用break阻断
$score=92;
$s=(integer)($score/10);
switch($s){
case7:
echo奖励一百块;
echobr;
case8:
echo奖励五百块;
echobr;
case9:
echo奖励一千块;
echobr;
default:
echo没有奖励;
echobr;
}
运行结果:
结果中不仅显示了“奖励一千块”,将default中的内容也显示了出来,修正代码:
$score=92;
$s=(integer)($score/10);
switch($s){
case7:
echo奖励一百块;
echobr;
break;
case8:
echo奖励五百块;
echobr;
break;
case9:
echo奖励一千块;
echobr;
break;
default:
echo没有奖励;
echobr;
break;
}
运行结果: