遞迴的運作原理就是在同一個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")." " ;
}
$weektext=activityweek($week=$weektext,$type="3");
break;
case "2": //按數值對應星期
switch($week){
default:
}
return $weektext;
}
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;
$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
留言
張貼留言