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 中国語 Web サイトの他の関連記事を参照してください。