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 "优
";
break;
case $score>=80 && $score<90:
echo "良
";
break;
case $score>=70 && $score<80:
echo "中
";
break;
case $score>=60 && $score<70:
echo "及格
";
break;
case $score>=0 && $score<60:
echo "不及格
";
break;
default:
echo"成绩输入错误
";
}
?>
简单示例<?php
//switch细节
//情况一:数值匹配的时候自动转换成字串
$a=1;
switch($a){
case "1":
echo 'hello1';
break;
default:
echo 'sorry none is the same!';
break;
}
echo '
'.'成功退出····';
echo '
';
//情况二:数值匹配的时候自动转换成字符
$a=1;
switch($a){
case '1':
echo 'hello2';
break;
default:
echo 'sorry none is the same!';
break;
}
echo '
'.'成功退出····';
echo '
';
//情况三:字符匹配的时候自动转换成数值
$a='1';
switch($a){
case 1:
echo 'hello3';
break;
default:
echo 'sorry none is the same!';
break;
}
echo '
'.'成功退出····';
echo '
';
//情况四:字串匹配的时候自动转换成数值
$a="1";
switch($a){
case 1:
echo 'hello4';
break;
default:
echo 'sorry none is the same!';
break;
}
echo '
'.'成功退出····';
echo '
';
//情况五:float也可以匹配
$a=1.1;
switch($a){
case 1.1:
echo 'hello5';
break;
default:
echo 'sorry none is the same!';
break;
}
echo '
'.'成功退出····';
echo '
';
//情况六:非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 '
'.'成功退出····';
echo '
';
//情况七:能匹配boolean
$a=true;
switch($a){
case true:
echo 'hello7';
break;
case 2:
echo 'hello71';
break;
default:
echo 'sorry none is the same!';
break;
}
echo '
'.'成功退出····';
echo '
';
//情况八:能匹配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 '
'.'成功退出····';
echo '
';
//情况九:退出顺序
$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 '
'.'成功退出····';
echo '
';
//情况十:退出顺序
$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 '
'.'成功退出····';
echo '
';
?>
运行结果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的值为不知道';
}