跳到主要內容

用PHP遞迴作switch流程控制範例-教學撰寫:徐嘉裕Neil hsu

遞迴的運作原理就是在同一個function裡面再次或多次執行同樣的function,通常用在解階層式資料,像是分類父層子層之類的,但遞迴也能作為switch流程控制用途,這樣就能吧本來要用很多的function用一個function就能執行完畢了,程式也精簡很多,以下是參考範例:


例如我們要做一個以陣列方式選取星期的功能,然後吧陣列數值儲存為unserialize字串格式




所以儲存進資料表的字串內容如下:

a:4:{i:0;s:1:"1";i:1;s:1:"3";i:2;s:1:"5";i:3;s:1:"7";}


接下來要在頁面上吧選擇星期的字串內容改為輸出星期一~星期日,並指定顯示選取的內容,我們利用PHP遞迴作switch流程控制一次搞定

//PHP-function

//活動星期

function activityweek($week="",$type=""){
switch($type){

case "1": //開啟字串轉陣列解出數值
foreach(unserialize($week) as $val){
$weektext.="<span class='glyphicon glyphicon-check' aria-hidden='true'></span>".activityweek($week=$val,$type="2")." &nbsp;" ;
}
$weektext=activityweek($week=$weektext,$type="3");
break;

case "2": //按數值對應星期
switch($week){
case "1":
$weektext=_MS_SHARED162; //星期一
break;

case "2":
$weektext=_MS_SHARED163; //星期二
break;

case "3":
$weektext=_MS_SHARED164; //星期二
break;

case "4":
$weektext=_MS_SHARED165; //星期四
break;

case "5":
$weektext=_MS_SHARED166; //星期五
break;

case "6":
$weektext=_MS_SHARED167; //星期六
break;

case "7":
$weektext=_MS_SHARED168; //星期日
break;
}
break;

case "3": //輸出樣式
$weektext="<div class='well well-sm text-center'>".sprintf(_MD_SIGNEDUPCENTERPHP232,$week)."</div>";
break;

default:
}
return $weektext;
}

紅字部分為function遞迴讀取,透過$type值來切換switch流程,最後在要顯示資訊的頁面上呼叫activityweek()並給於值參就能將結果顯示於頁面上了

ECHO $weekbox=activityweek($week=$var['week'],$type="1");



這只是一個簡單的範例,但可以精簡程式流程加快開發速度,有需要的朋友可以參考看看


工作心的撰寫:徐嘉裕 Neil hsu

留言