1. 程式人生 > >PHP中使用遞迴函式

PHP中使用遞迴函式

下面是使用遞迴函式的一個小例子。
這裡寫圖片描述
目的是根據parent_id和task_id對task進行分類。
具體實現:

<?php
//連線資料庫,使用前幾天建立的資料庫連線檔案進行連線,如果沒有這個檔案可以去我的部落格裡找一下
require_once('./db.php');
$connect = DB::getInstance()->connect();
$sql = 'select task_id, parent_id, task from t_task order by parent_id asc';
$res = $connect->query($sql);

//這裡設定一個數據,用來存放task下是否有別的task
$tasks = array(); //下面就來存放,一看就懂 while(list($task_id, $parent_id, $task) = $res->fetch()) { $tasks[$parent_id][$task_id] = $task; } //可以輸出一下tasks看看是什麼樣的,見圖1-1,可以看出它其實就是將每一個task根絕parent_id分成了不同的組 //定義遞迴函式 function make_list($parent) { global $tasks;//引入$tasks echo '<ol>'; foreach($parent
as $task_id => $todo) { //將$parent中的陣列進行迴圈 echo '<li>'.$todo; //如果$tasks中有task_id的話,代表這個task_id的task是有子task的,也就是有task的task_id的parent_id是這個task_id,說的可能有點複雜,其實仔細想一想還是很簡單的,就是判斷是否有子task //如果有的話就把這個task_id當做值再次傳入make_list(),然後查詢它有沒有子task if(isset($tasks[$task_id
])) { make_list($tasks[$task_id]); } echo '</li>'; } echo '</ol>'; } ?>

圖1-1
這裡寫圖片描述
最終輸出結果:
這裡寫圖片描述