在做网站中,任何PHP脚本都是由一系列语句构成的。一条语句可以是一个赋值语句,一个函数调用,一个循环,一个条件语句或者是一个什么也不做的空语句。语句通常以分号结束,用户可以使用大括号将一组语句封装成一个语句组。语句组本身可以当作是一行语句。本节将重点介绍PHP流程控制结构和语句,这里主要包括条件语句和循环语句。
if条件语句
if结构是很多语言(包括PHP在内)最重要的特性之一,它允许按照条件执行代码片段。PHP的if结构和C语言相似。
<?phpif (expr) statement?>
如果表达式expr的值为true,PHP将执行statement,如果值为false,将忽略statement。例如,在下面示例中,如果$a大于$b,则将显示"a大于b"。
<?phpif($a > $b) echo "a 大于b";?>
经常需要按照条件执行不止一条语句,当然并不需要给每条语句都加上一个if子句。可以将这些语句放入语句组中。例如,如果$a大于$b,则将显示"a大于b",并且将$a的值赋给$b。
<?phpif ($a > $b) { echo "a大于b"; $b = $a;}?>
if语句可以无限层地嵌套在其他if语句中,这给程序的不同部分的条件执行提供了充分的弹性。
else条件语句
用户经常需要设计在满足某个条件时执行一条语句,而在不满足该条件时执行其他语句,这正是else语句的功能。else延伸了if语句,可以在if语句中的表达式的值为false时执行语句。例如,在下面示例中,如果$a大于$b时,显示"a大于b",反之则显示"a不大于b"。
<?phpif ($a > $b) { echo "a大于b";} else { echo "a不大于b";}?>else
语句仅在if以及elseif语句中的表达式的值为false时执行。
else if条件语句
else if与else条件语句一样,它延伸了if语句,可以在原来的if表达式值为false时执行不同语句。但是与else不一样的是,它仅在else if的条件表达式值为true时执行语句。例如,在下面示例中,如果$a大于$b时,显示"a大于b",如果相等,则显示"a等于b",都不成立则显示"a小于b"。
<?phpif ($a > $b) { echo "a大于b";} elseif ($a == $b) { echo "a等于b";} else { echo "a小于b";}?>
在同一个if结构中可以有多个elseif语句。第一个表达式值为true的elseif语句(如果有的话)将会执行。在PHP中,也可以写成elseif,它和else if语句的行为完全一样。句法分析的含义有少许区别,elseif的语句仅在之前的if或elseif的表达式值为false,而当前的elseif表达式值为true时执行。
注意:elseif与else if只有在使用大括号的情况下才认为是完全相同。
switch条件语句
elseif语句可以设计多重选择,但是比较繁琐,为了避免if语句的冗长结构,用户可以使用switch语句简化编程。switch语句适合于这样的环境:当需要把同一个变量(或表达式)与很多不同的值比较,并根据它等于哪个值来执行不同的代码。
<?phpswitch ($i) { case 0: echo "i= 0"; break; case 1: echo "i=1"; break; case 2: echo "i=2"; break;}?>
switch语句是一行接一行地执行,开始时没有代码被执行,仅当一个case语句中的值和switch表达式的值匹配时,PHP才开始执行语句,直到switch的程序段结束或者遇到第一个break语句为止。如果不在case的语句段最后写上break的话,PHP将继续执行下一个case中的语句段。如:
<?phpswitch ($i) { case 0: echo "i=0"; case 1: echo "i=1"; case 2: echo "i=2";}?>
如果$i等于0,PHP将执行所有的输出语句,如果$i等于1,PHP将执行后面两条输出语句,只有当$i等于2时,才会得到预期的结果,只显示“i=2”。所以,别忘了break语句很重要。
在switch语句中条件只求值一次,并用来与每个case语句比较。而在elseif语句中条件会再次求值。如果条件比较复杂,或者在一个很多次的循环中,那么选用switch语句可能会快一些。在一个case中的语句也可以为空,这样只不过将控制转移到了下一个case中的语句。如:
<?phpswitch ($i) { case 0: case 1: case 2: echo "i<3"; break; case 3: echo "i=3";}?>
default语句比较特殊,它匹配其他case都不匹配的情况。如:
<?phpswitch ($i) { case 0: echo "i=0"; break; case 1: echo "i=1"; break; case 2: echo "i=2"; break; default: echo "i不是0、1、2";}?>
case表达式可以是任何求值为简单类型的表达式,即整型或浮点数以及字符串,不能是数组或对象,除非它们被解除引用成为简单类型。同时,PHP还允许使用分号(;)代替case语句后的冒号(:),如:
<?phpswitch($i){ case 1; case 2; case 3; echo "i=3"; break; default; echo '…';}?>
注意:与其他语言不同,在switch结构中,continue语句作用类似于break语句。如果在循环中有一个switch结构并希望continue到外层循环中的下一个轮回,可以使用continue语句。
当前文章标题:PHP流程控制(1)
当前URL:http://www.lyjtt.cn/news/wzzz/3244.html
上一篇:PHP表达式
下一篇:PHP流程控制(2)