2.6.2 条件控制语句:if和if……else语句
PHP通过一系列条件控制语句完成程序的选择执行流程。PHP中使用if、if……else(elseif)语句构建选择程序结构。
1.if语句
if语句的结构如下所示。
if(expr)
statement
上述结构的含义是,如果表达式expr的值为真(TRUE),才会执行语句statement。也就是说,当表达式expr成立时,语句statement才会被执行,否则,表达式expr不成立(即expr的值为FALSE),那么语句statement被忽略,不会执行。代码2-21是一个if语句的示例程序。
代码2-21 if语句2-21.php
01 <?php
02 $a=2;//定义两个整型变量$a和$b
03 $b=3;
04
05 echo'$a='.$a;
06 echo'<br/>';
07 echo'$b='.$b;
08 echo'<br/>';
09 echo'<br/>';
10
11 if($a<$b)//比较两个变量的大小
12 echo"$a小于$b";
13 ?>
【代码解析】上述程序第11行中,表达式$a<$b的值为1(TRUE),所以程序执行echo语句输出“$a小于$b”。if后面可以跟一个空语句,即只加一个分号“;”的语句,表示当条件成立时,什么都不做。如下面的代码。此时,if后跟了一个使用分号结束的空语句,表示当表达式$a<$b的值为1时,程序什么都不做。
if($a<$b);
2.if……else语句
if……else语句的结构如下所示。
if(expr)
statement1
else
statement2
if……else结构的含义是:如果表达式expr的值为真,程序执行语句statement1;否则程序执行statement2。两个语句只能有一个被执行,另外一个将会被忽略。下面的代码2-22演示了if……else语句的使用方法。
代码2-22 if……else语句2-22.php
01 <?php
02 $a=2;//定义两个整型变量$a和$b
03 $b=3;
04
05 if($a>$b)//比较两个变量的大小
06 echo"$a大于$b";
07 else
08 echo"$a小于或等于$b";
09 ?>
【代码解析】上述程序第5行中,表达式$a>$b的值为0(FALSE),所以if后的语句“echo"$a大于$b"”被忽略,不会执行,转去执行else后面的echo语句。在PHP中,else并不是单独的语句,它和if语句必须成对使用,也就是说不能将其从if语句中分离出来单独使用。
如果判断条件成立时要执行的语句只有一条,那么if语句后可以不加花括号“{”和“}”,就像上面几个示例程序写的那样。如果判断条件成立时有多条语句要执行,那么这些语句应该组成语句组,放在一对花括号里。如下面的示例代码2-23所示,当条件成立时,需要执行3条语句,因此它们都在花括号里。
代码2-23 if……else语句2-23.php
01 <?php
02 $a=2;//定义两个整型变量$a和$b
03 $b=3;
04
05 if($a<$b)//比较两个变量的大小
06 {
07 echo'$a='.$a;
08 echo"<br/>";
09 echo"<br/>";
10
11 echo'$b='.$b;
12 echo"<br/>";
13 echo"<br/>";
14
15 echo'$a小于$b';
16 }
17 else
18 {
19 echo"$a和$b比较";
20 echo'$a大于等于$b';
21 }
【代码解析】第6~16行是在满足第5行的条件下执行的{}语句块,第18~21行是在不满足条件的情况下执行的{}语句块。该程序的执行结果如图2-17所示。
3.if……elseif语句
if……elseif语句的结构如下所示。
if(expr1)
statement1
elseif(expr2)
statement2
……
else
statement
if……elseif结构的含义是:如果表达式expr1的值为1,程序执行语句statement1;否则,判断表达式expr2,如果expr2的值为1,程序执行语句statement2;否则,如果有其他表达式需要判断,则依次判断下去,如果所有表达式的值都不为1,则执行else后的statement语句。如果其中有一个表达式的值为1,那么它的语句将被执行,因此,剩下的表达式将不会做判断,程序直接从控制结构中跳出,接着执行后续代码。代码2-24演示了if……elseif语句的使用。
代码2-24 if……elseif语句2-24.php
01 <?php
02 $a=2;//定义两个整型变量$a和$b
03 $b=2;
04
05 echo'$a='.$a;
06 echo'<br/>';
07 echo'$b='.$b;
08 echo'<br/>';
09 echo'<br/>';
10
11 if($a<$b)//比较两个变量的大小
12 echo'$a小于$b';
13 elseif($a==$b)
14 echo'$a等于$b';
15 elseif($a>$b)
16 echo'$a大于$b';
17 else
18 'error!';
19 ?>
【代码解析】上述程序中,因为只有第13行的表达式$a==$b成立,所以只有第14行的语句“echo'$a等于$b'”被执行。当这条语句被执行后,程序将从if……elseif控制结构中跳出,不会执行到代码elseif($a>$b),即程序不会再去做$a>$b是否成立的判断。程序执行结果如图2-18所示。
共有条评论 网友评论