PHP3中文参考手册 中文翻译:Sadly sadly@21cn.com http://wansoft.soim.net | ||
---|---|---|
上一页 | 第六章基本语句 | 下一页 |
SWITCH语句就象是对同一个表达式的一系列IF语句。在很多时侯,你想把同一个变量(或者表达式)和许多不同的值去比较 ,并根据不同的比较结果执行不同的程序段。这就是 SWITCH语句的用处了。
下面两个例子通过不同的方法做同一件事,一个用一组 IF语句,另外一个用 SWITCH 语句:
/* example 1 */ if ($i == 0) { print "i equals 0"; } if ($i == 1) { print "i equals 1"; } if ($i == 2) { print "i equals 2"; } /* example 2 */ switch ($i) { case 0: print "i equals 0"; break; case 1: print "i equals 1"; break; case 2: print "i equals 2"; break; }
弄懂SWITCH 语句怎样执行对于避免错误非常重要。SWITCH语句一行一行的执行(确切的说,是一句一句的)。在开始处,没有任何代码被执行。只有一个和SWITCH表达式的值相一致的CASE语句被发现, PHP开始执行下面的语句。PHP继续执行下面的语句直到整个SWITCH结束,或者碰到第一条BREAK语句。如果你在一种情况处理完后不写 BREAK 语句, PHP将继续执行下面情况才需执行的语句。例如:
/* example 3 */ switch ($i) { case 0: print "i equals 0"; case 1: print "i equals 1"; case 2: print "i equals 2"; }
这里,如果$i等于 0, PHP将执行所有的print语句! 如果 $i 等于 1, PHP 将执行后两条 print语句,只有 $i 等于 2 时, 你得到了想要的结果---只显示 'i equals 2'。所以,千万不要忘了写 BREAK 语句(尽管你在特定情况下可能想避免它们)。
有一种特别的情况是默认情况。这种情况和任何其他情况不匹配的情况相匹配。例如:
/* example 4 */ switch ($i) { case 0: print "i equals 0"; break; case 1: print "i equals 1"; break; case 2: print "i equals 2"; break; default: print "i is not equal to 0, 1 or 2"; }
另外一点值得注意的是 CASE 表达式可以是任何有界的类型,整形或者实形以及字符串形。数组和对象虽然不会破坏 PHP, 但在这里没有任何意思。