Switch语句也是面向对象编程语句中最长常见的逻辑控制语句了。Switch 语句用于执行基于多个不同条件的不同动作 – 即当条件不同的时候,执行不同的逻辑操作。它跟其他语句中的switch用法差不多的,但注意有有一个break语句。
PHP中switch语句的标准语法:
switch (expression) { case label1: code to be executed if expression = label1; break; case label2: code to be executed if expression = label2; break; default: code to be executed if expression is different from both label1 and label2; }
举例:
switch($i){ case 1: echo 1; break; case 2: echo 2; break; default: echo 'others'; }
也可以使用switch来判断一个取值范围,或者说是在case中自定义条件。
<?php header("content-type:text/html;charset=utf8"); $score=50; switch($score) { case $score>=90 && $score<=100: echo "优<br>"; break; case $score>=80 && $score<90: echo "良<br>"; break; case $score>=70 && $score<80: echo "中<br>"; break; case $score>=60 && $score<70: echo "及格<br>"; break; case $score>=0 && $score<60: echo "不及格<br>"; break; default: echo"成绩输入错误<br>"; } ?>
简单示例
<?php //switch细节 //情况一:数值匹配的时候自动转换成字串 $a=1; switch($a){ case "1": echo 'hello1'; break; default: echo 'sorry none is the same!'; break; } echo '<br/>'.'成功退出····'; echo '<hr/>'; //情况二:数值匹配的时候自动转换成字符 $a=1; switch($a){ case '1': echo 'hello2'; break; default: echo 'sorry none is the same!'; break; } echo '<br/>'.'成功退出····'; echo '<hr/>'; //情况三:字符匹配的时候自动转换成数值 $a='1'; switch($a){ case 1: echo 'hello3'; break; default: echo 'sorry none is the same!'; break; } echo '<br/>'.'成功退出····'; echo '<hr/>'; //情况四:字串匹配的时候自动转换成数值 $a="1"; switch($a){ case 1: echo 'hello4'; break; default: echo 'sorry none is the same!'; break; } echo '<br/>'.'成功退出····'; echo '<hr/>'; //情况五:float也可以匹配 $a=1.1; switch($a){ case 1.1: echo 'hello5'; break; default: echo 'sorry none is the same!'; break; } echo '<br/>'.'成功退出····'; echo '<hr/>'; //情况六:非0是true $a=true; switch($a){ case 1: echo 'hello6'; break; case true: echo 'hello61'; break; default: echo 'sorry none is the same!'; break; } echo '<br/>'.'成功退出····'; echo '<hr/>'; //情况七:能匹配boolean $a=true; switch($a){ case true: echo 'hello7'; break; case 2: echo 'hello71'; break; default: echo 'sorry none is the same!'; break; } echo '<br/>'.'成功退出····'; echo '<hr/>'; //情况八:能匹配null $a=null; switch($a){ case 2://'' "" false 0 都能进入 echo 'hello8'; break; case null: echo 'hello81'; break; default: echo 'sorry none is the same!'; break; } echo '<br/>'.'成功退出····'; echo '<hr/>'; //情况九:退出顺序 $a=5; switch($a){ case 1: echo 'hello6'; break; case 2: echo '我是2号出口'; break; case 5: echo '我是5号出口'; //break; case true: echo 'hello61'; break; default: echo 'sorry none is the same!'; break; } echo '<br/>'.'成功退出····'; echo '<hr/>'; //情况十:退出顺序 $a=50; switch($a){ default: echo 'sorry none is the same!'; //break; case 50: echo 'hello6'; //break; case 2: echo '我是2号出口'; break; case 5: echo '我是5号出口'; //break; case 6: echo 'hello61'; break; } echo '<br/>'.'成功退出····'; echo '<hr/>'; ?>
运行结果
hello1 成功退出···· hello2 成功退出···· hello3 成功退出···· hello4 成功退出···· hello5 成功退出···· hello6 成功退出···· hello7 成功退出···· hello81 成功退出···· 我是5号出口hello61 成功退出···· hello6我是2号出口 成功退出····
不管写什么语言的程序,一定会考虑到代码的运行效率问题。在查阅了一些资料后,switch与ifelse在不同的‘环境'下效率各有优胜。
1、当被判断的值是常量(固定不变的值)时,switch的运行效率比ifelse的运行效率高;
$changliang=3; // 变判断的值为常量 switch($changliang){ case 1: echo '常量值为1'; break; // 跳出循环 case 2: echo '常量值为2'; break; case 3: echo '常量值为3'; break; }
2、当被判断值为变量,ifelse的运行效率高于switch,ifelse贯彻一判到底的方针,会从第一个条件开始判断,直到最后一个else,所以学会使用switch有好处;
$a = $_GET['a']; // 通过get传值后接值; 被判断的值 if($a=1){ echo '变量a的值为1'; }elseif($a=2){ echo '变量a的值为2'; }elseif($a=3){ echo '变量a的值为3'; }else{ echo '变量a的值为不知道'; }
以上是php switch语句语法实例和与ifelse的效率比较的详细内容。更多信息请关注PHP中文网其他相关文章!