php中switch語句的用法介紹
來源:程序員人生 發(fā)布時間:2014-03-28 00:07:03 閱讀次數(shù):2791次
本文章詳細的介紹了switch語句在php中用法,以及switch case在條件為0時的處理辦法,有需要了解的同學可以參考一下.
Switch 語句
如果您希望有選擇地執(zhí)行若干代碼塊之一,請使用 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;
- }
實例
工作原理:
對表達式(通常是變量)進行一次計算
把表達式的值與結(jié)構(gòu)中 case 的值進行比較
如果存在匹配,則執(zhí)行與 case 關聯(lián)的代碼
代碼執(zhí)行后,break 語句阻止代碼跳入下一個 case 中繼續(xù)執(zhí)行
如果沒有 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檢測.
//輸出結(jié)果為:bool(true) bool(false) xxx
實例代碼如下:
- var_dump(""==0);
- var_dump(""===0);
- $errid = '';
- switch ($errid) {
- case 0 :
- echo "xxx";
- break;
- default:
- echo "yyy";
- }
真相大白了,原來 switch/case結(jié)構(gòu)中,比較case值用的是==而不是===.這樣,空就和0相等了,我收到的結(jié)果也當然就是錯誤的了.
沒辦法,程序不想改,畢竟多條件的時候switch/case要比一堆if讓人看著舒心.想辦法吧.呵呵.
實例代碼如下:
- $result = '';
- if(is_numeric($err_id) === false) {
- $result .= '宕機或超時,沒有返回值';
- return $result;
- }
- switch ($err_id) {
- case xxx :
- ..........
- }
問題解決了,先判斷一下返回值是否是數(shù)值,如果不是數(shù)值的話,直接return.
以后寫switch/case判斷數(shù)字的時候一定要小心,尤其是有0這個敗家值存在的時候
switch 語句和 elseif 語句的比較
在switch 語句中,條件只求一次,然后和每個 case 比較,而在 elseif 語句中,條件會再次求值.如果你的條件比較復雜,或者是多次循環(huán),用 switch 語句速度會更加快些
生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學習有所幫助,可以手機掃描二維碼進行捐贈