<?php $db = mysql_connect (' localhost ', ' root ', ' root ') or Die (' can\ ' t connect to database '); mysql_select_db (' test ') or Die (' can\ ' t find Database:test '); $result = mysql_query (' Select ID, FID, name from tree '); while ($arr = Mysql_fetch_array ($result)) {$data [] = array (' id ' = = $arr [' id '], ' fid ' + = $arr [' FID '], ' name ' = = $arr [' name '],); }//The data is indented in a simple arrangement as shown in Figure 1 function Data2arr ($tree, $rootId = 0, $level = 0) {foreach ($tree as $leaf) {if ($ leaf[' fid '] = = $rootId) {echo str_repeat (' ', $level). $leaf [' id ']. ‘ ‘ . $leaf [' name ']. ' <br/> '; foreach ($tree as $l) {if ($l [' fid '] = = $leaf [' id ']) {Data2arr ($tree, $leaf [' ID '], $ Level + 1); Break }}}}} Data2arr ($data); Echo ' <br/>-----------------------------------------------------------------------<br/> '; Enclose the data in the owning relationship as shown in Figure 2 function Arr2tree ($tree, $rootId = 0) {$return = array (); foreach ($tree as $leaf) {if ($leaf [' fid '] = = $rootId) {foreach ($tree as $subleaf) { if ($subleaf [' fid '] = = $leaf [' id ']) {$leaf [' children '] = Arr2tree ($tree, $leaf [' id ']); Break }} $return [] = $leaf; }} return $return; } $tree = Arr2tree ($data); Print_r ($tree); Echo ' <br/>-----------------------------------------------------------------------<br/> '; Using HTML again to show the data is shown in Figure 3 function tree2html ($tree) {echo ' <ul> '; foreach ($tree as $leaf) {echo ' <li> '. $leaf [' name ']; if (! emptyempty ($leaf [' Children '])) tree2html ($leaf [' Children ']); Echo ' </li> '; } echo ' </ul> '; } tree2html ($tree);
PHP recursively implements hierarchical tree presentation data