Rumah >pembangunan bahagian belakang >tutorial php >php switch语句语法实例和与ifelse的效率比较

php switch语句语法实例和与ifelse的效率比较

伊谢尔伦
伊谢尔伦asal
2017-06-23 10:20:152153semak imbas

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 &#39;hello1&#39;; 
    break; 
  default: 
    echo &#39;sorry none is the same!&#39;; 
    break; 
 } 
 echo &#39;<br/>&#39;.&#39;成功退出····&#39;; 
 echo &#39;<hr/>&#39;; 
  //情况二:数值匹配的时候自动转换成字符 
 $a=1; 
 switch($a){ 
  case &#39;1&#39;: 
    echo &#39;hello2&#39;; 
    break; 
  default: 
    echo &#39;sorry none is the same!&#39;; 
    break; 
 } 
 echo &#39;<br/>&#39;.&#39;成功退出····&#39;; 
 echo &#39;<hr/>&#39;; 
  //情况三:字符匹配的时候自动转换成数值 
 $a=&#39;1&#39;; 
 switch($a){ 
  case 1: 
    echo &#39;hello3&#39;; 
    break; 
  default: 
    echo &#39;sorry none is the same!&#39;; 
    break; 
 } 
 echo &#39;<br/>&#39;.&#39;成功退出····&#39;; 
 echo &#39;<hr/>&#39;; 
  //情况四:字串匹配的时候自动转换成数值 
 $a="1"; 
 switch($a){ 
  case 1: 
    echo &#39;hello4&#39;; 
    break; 
  default: 
    echo &#39;sorry none is the same!&#39;; 
    break; 
 } 
 echo &#39;<br/>&#39;.&#39;成功退出····&#39;; 
 echo &#39;<hr/>&#39;; 
  //情况五:float也可以匹配 
 $a=1.1; 
 switch($a){ 
  case 1.1: 
    echo &#39;hello5&#39;; 
    break; 
  default: 
    echo &#39;sorry none is the same!&#39;; 
    break; 
 } 
 echo &#39;<br/>&#39;.&#39;成功退出····&#39;; 
 echo &#39;<hr/>&#39;; 
  //情况六:非0是true 
 $a=true; 
 switch($a){ 
  case 1: 
    echo &#39;hello6&#39;; 
    break; 
  case true: 
    echo &#39;hello61&#39;; 
    break; 
  default: 
    echo &#39;sorry none is the same!&#39;; 
    break; 
 } 
 echo &#39;<br/>&#39;.&#39;成功退出····&#39;; 
 echo &#39;<hr/>&#39;; 
  //情况七:能匹配boolean 
 $a=true; 
 switch($a){ 
  case true: 
    echo &#39;hello7&#39;; 
    break; 
  case 2: 
    echo &#39;hello71&#39;; 
    break; 
  default: 
    echo &#39;sorry none is the same!&#39;; 
    break; 
 } 
 echo &#39;<br/>&#39;.&#39;成功退出····&#39;; 
 echo &#39;<hr/>&#39;; 
  //情况八:能匹配null 
 $a=null; 
 switch($a){ 
  case 2://&#39;&#39; "" false 0 都能进入 
    echo &#39;hello8&#39;; 
    break; 
  case null: 
    echo &#39;hello81&#39;; 
    break; 
  default: 
    echo &#39;sorry none is the same!&#39;; 
    break; 
 } 
 echo &#39;<br/>&#39;.&#39;成功退出····&#39;; 
 echo &#39;<hr/>&#39;; 
  //情况九:退出顺序 
 $a=5; 
 switch($a){ 
  case 1: 
    echo &#39;hello6&#39;; 
    break; 
  case 2: 
    echo &#39;我是2号出口&#39;; 
    break; 
  case 5: 
    echo &#39;我是5号出口&#39;; 
    //break; 
  case true: 
    echo &#39;hello61&#39;; 
    break; 
  default: 
    echo &#39;sorry none is the same!&#39;; 
    break; 
 } 
 echo &#39;<br/>&#39;.&#39;成功退出····&#39;; 
 echo &#39;<hr/>&#39;; 
  //情况十:退出顺序 
 $a=50; 
 switch($a){ 
  default: 
    echo &#39;sorry none is the same!&#39;; 
    //break; 
  case 50: 
    echo &#39;hello6&#39;; 
    //break; 
  case 2: 
    echo &#39;我是2号出口&#39;; 
    break; 
  case 5: 
    echo &#39;我是5号出口&#39;; 
    //break; 
  case 6: 
    echo &#39;hello61&#39;; 
    break; 
 } 
 echo &#39;<br/>&#39;.&#39;成功退出····&#39;; 
 echo &#39;<hr/>&#39;; 
?>

运行结果

hello1
成功退出····
hello2
成功退出····
hello3
成功退出····
hello4
成功退出····
hello5
成功退出····
hello6
成功退出····
hello7
成功退出····
hello81
成功退出····
我是5号出口hello61
成功退出····
hello6我是2号出口
成功退出····

不管写什么语言的程序,一定会考虑到代码的运行效率问题。在查阅了一些资料后,switch与ifelse在不同的‘环境'下效率各有优胜。

1、当被判断的值是常量(固定不变的值)时,switch的运行效率比ifelse的运行效率高;

$changliang=3;   // 变判断的值为常量
switch($changliang){
  case 1:
    echo &#39;常量值为1&#39;;
    break;   // 跳出循环
  case 2:
    echo &#39;常量值为2&#39;;
    break;
  case 3:
    echo &#39;常量值为3&#39;;
    break;
}

2、当被判断值为变量,ifelse的运行效率高于switch,ifelse贯彻一判到底的方针,会从第一个条件开始判断,直到最后一个else,所以学会使用switch有好处;

$a = $_GET[&#39;a&#39;]; // 通过get传值后接值; 被判断的值
if($a=1){
  echo &#39;变量a的值为1&#39;;
}elseif($a=2){
  echo &#39;变量a的值为2&#39;;
}elseif($a=3){
  echo &#39;变量a的值为3&#39;;
}else{
  echo &#39;变量a的值为不知道&#39;;
}

Atas ialah kandungan terperinci php switch语句语法实例和与ifelse的效率比较. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn