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