程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php中switch語句的用法介紹

php中switch語句的用法介紹

編輯:關於PHP編程

本文章詳細的介紹了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 :
        ..........
}

問題解決了,先判斷一下返回值是否是數值,如果不是數值的話,直接return。
以後寫switch/case判斷數字的時候一定要小心,尤其是有0這個敗家值存在的時候

switch 語句和 elseif 語句的比較
在 switch 語句中,條件只求一次,然後和每個 case 比較,而在 elseif 語句中,條件會再次求值。如果你的條件比較復雜,或者是多次循環,用 switch 語句速度會更加快些

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved