ツリー状のデータを読み取る方法
ツリー状のデータを読み取る方法
一般に、「隣接リスト アルゴリズム」によって整理されたデータを読み取る場合、再帰を使用してレイヤーごとに読み取る
か、データを読み取る必要があります配列に変換し、再帰的または非再帰的メソッドを使用して処理します
読み取り中に「ツリー状の」配列を生成するメソッドを紹介します。お役に立てば幸いです
mysql_connect();<br /><br />//测试数据<br />$sql =<<< SQL<br />select * from (<br /> select '1' as id, '0' as pid, 'Food' as title<br /> union all select '2', '1', 'Fruit'<br /> union all select '3', '2', 'Red'<br /> union all select '4', '3', 'Cherry'<br /> union all select '5', '2', 'Yellow'<br /> union all select '6', '5', 'Banana'<br /> union all select '7', '1', 'Meat'<br /> union all select '8', '7', 'Beef'<br /> union all select '9', '7', 'Pork'<br /> ) t<br /> order by pid, id<br />SQL;<br /><br />$rs = mysql_query($sql);<br /><br />$res = array(); //结果数组<br />$ind = array(); //索引数组<br />while($row = mysql_fetch_assoc($rs)) {<br /> list($id, $pid) = array_values($row); <br /> $ind[$id] = $row;<br /> if(isset($ind[$pid])) $ind[$pid]['child'][$id] =& $ind[$id]; //构造索引<br /> if($pid == 0) $res[$id] =& $ind[$id]; //转存根节点组<br />}<br /><br />echo '<xmp>' . print_r($res, 1);<br />