使用PHP 和MySQL 查詢結果取得子節點、孫子節點和後代節點
此查詢從具有鄰接清單的MySQL 表中擷取資料結構,其中每一行代表一個節點及其與其父節點的關係。目標是將這些資料轉換為數組,其中包含指定父 ID 下的所有子節點、孫節點和後代節點,同時合併父節點本身。
使用遞歸函數:fetch_recursive
fetch_recursive 函數從給定的父 ID 開始遞曆資料數組,並遍歸地新增子元素,直到包含所有後代節點。函數代碼如下:
function fetch_recursive($src_arr, $currentid, $parentfound = false, $cats = array()) { foreach($src_arr as $row) { if((!$parentfound && $row['id'] == $currentid) || $row['parent_id'] == $currentid) { $rowdata = array(); foreach($row as $k => $v) $rowdata[$k] = $v; $cats[] = $rowdata; if($row['parent_id'] == $currentid) $cats = array_merge($cats, fetch_recursive($src_arr, $row['id'], true)); } } return $cats; }
使用fetch_recursive 函數
要使用該函數,請將查詢獲得的資料數組傳遞給fetch_recursive 函數,並指定您想要從中檢索後代的父ID。例如:
$list = fetch_recursive($data, 3);
這將傳回一個具有以下結構的數組,包括 ID 為 3 的父節點及其所有後代:
Array ( [0] => Array ( [id] => 3 [name] => Portable Electronics [parent_id] => 1 ) [1] => Array ( [id] => 7 [name] => Mp3 Players [parent_id] => 3 ) [2] => Array ( [id] => 10 [name] => Flash [parent_id] => 7 ) [3] => Array ( [id] => 8 [name] => CD Players [parent_id] => 3 ) [4] => Array ( [id] => 9 [name] => 2 Way Radios [parent_id] => 3 ) )
以上是如何使用 PHP 和 MySQL 查詢結果來取得子節點、孫節點和後代節點?的詳細內容。更多資訊請關注PHP中文網其他相關文章!