PHP流程控制之分支結(jié)構(gòu)switch語句的使用
分支結(jié)構(gòu)switch語句的使用
還記得我們最開始講了這么一個故事:
王同學家里頭特別有錢,所以他的行程方式和正常人的又有些不一樣。
他的出行方式呢有6種,如下:
1,司機開車
2,民航
3,自己家的專機
4,火車動車
5,騎馬
6,游輪
他的方式有6種,而骰子也真好有6面。所以,我們用if...elseif...的判斷方式可以實現(xiàn),但是效率太低了。
還有其他更好的方式嗎?我們可以使用到一種方式就是:switch...case語法。
switch...case的語法結(jié)構(gòu)如下:
<?php switch(變量){ //字符串,整型 case 具體值: 執(zhí)行代碼; break; case 具體值2: 執(zhí)行代碼2; break; case 具體值3: 執(zhí)行代碼3; break; default: } ?>
switch后放需要判斷的變量,而case后是放結(jié)果。switch后變值為多少,case的值寫的與switch變量執(zhí)相同段的代碼。
上面的break是可選的
上面的default也是可選的
不要在case 后面寫成分號,后面是冒號:
不要在case后面寫判斷區(qū)間,如($foo > 20 或者 $foo == 30)
switch里面在變量最好是 整型,字符串,因為布爾判斷更適合if...else..
我們用流程圖來表示的話結(jié)果就如下圖所示:
上節(jié)課中我們用到了rand函數(shù),那我們現(xiàn)在來用rand實現(xiàn)王思總同學的問題選擇:
<?php //定義出行工具 $tool=rand(1,6); switch($tool){ case 1: echo '司機開車'; break; case 2: echo '民航'; break; case 3: echo '自己家的專機'; break; case 4: echo '火車動車'; break; case 5: echo '騎馬'; break; case 6: echo '游輪'; break; } ?>
上面的代碼我們只需要簡單修改,就可以實現(xiàn)我們在微信上面玩的一個小游戲簡單的家務(wù)骰子和剪刀石頭布。你想想?
你再做做實驗:
我們可以把 case 1 代碼段中的break去掉,你再試試,什么效果?
我們再來寫一個簡單的星期判斷,寫法也可以變的怪一些喲:
<?php //得到今天是星期幾的英文簡稱 $day = date('D'); switch($day){ //拿學校舉例,我們讓星期一、二、三是校長日 case 'Mon': case 'Tue': case 'Wed': echo '校長日'; break; echo '星期三'; break; case 'Thu': echo '星期四'; break; case 'Fri': echo '星期五'; break; default: echo '周末,周末過的比周一到周五還要累<br />'; }; ?>
自己做實驗試試:
上面的例子發(fā)現(xiàn),不匹配的時候就執(zhí)行了defaultk吧?
當然你也可以這樣,不過這種寫太太累了,沒有if...else更加簡單。我們不用swith...case來做true和false判斷
<?php //用swith...case來完成bool判斷 $bool=true; switch($bool){ case true: case false: } /*********分隔線*******************/ if($bool){ }else{ } ?>
世界上最癡心的等待就是我是case你是switch, 我一只默默的等待,可是你卻不選我!