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