| 
       本文章详细的介绍了switch语句在php中用法,以及switch case在条件为0时的处理办法,有需要了解的同学可以参考一下。 
Switch 语句 
如果您希望有选择地执行若干代码块之一,请使用 Switch 语句。 
使用 Switch 语句可以避免冗长的 if..elseif..else 代码块。语法: 
	
	- 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;  
 
	- } 
 
	 
 
实例 
工作原理: 
对表达式(通常是变量)进行一次计算 
把表达式的值与结构中 case 的值进行比较 
如果存在匹配,则执行与 case 关联的代码 
代码执行后,break 语句阻止代码跳入下一个 case 中继续执行 
如果没有 case 为真,则使用 default 语句 
	
	- switch ($cps_sign) {  
 
	-         case 'yiqifa':  
 
	-         case 'chengguo':  
 
	-         case 'roiyiqifa':  
 
	-         case 'lkt':  
 
	-         case 'fanli':  
 
	-         case 'qqfanli':  
 
	-         case 'weiyi':  
 
	-         case 'yoyi':  
 
	-             $sql = "INSERT into sa_cps_list (`uv`,`s_time`,`cps`,`url`) VALUES ('{$uv}',{$timestamp},'{$cps_sign}','{$url}')";  
 
	-             echo $sql;exit();  
 
	-             mysql_query($sql);  
 
	-             break;  
 
	-         default:  
 
	-             break;  
 
	-     }  
 
	 
 
仔细看了一下程序,莫非是switch和case惹的祸?于是,写DEMO检测。 
输出结果为:bool(true) bool(false) xxx 
	
	- var_dump(""==0);      
 
	- var_dump(""===0);  
 
	- $errid = '';  
 
	- switch ($errid) {  
 
	-     case 0 :  
 
	-         echo "xxx";  
 
	-         break;  
 
	-     default:  
 
	-         echo "yyy";  
 
	- }  
 
	 
 
真相大白了,原来 switch/case结构中,比较case值用的是==而不是===。这样,空就和0相等了,我收到的结果也当然就是错误的了。 
没办法,程序不想改,毕竟多条件的时候switch/case要比一堆if让人看着舒心。想办法吧。呵呵。 
	
	- $result = '';  
 
	- if(is_numeric($err_id) === false) {    
 
	- $result .= '宕机或超时,没有返回值';   
 
	- return $result;  
 
	- }  
 
	- switch ($err_id) {  
 
	-     case xxx :  
 
	-         ..........  
 
	- } 
 
	 
 
      
      (责任编辑:admin) |