$cates = Array ( Array ' CID ' = 1, ' CNAME ' = ' news ', ' pid ' = 0 ),
Array ' CID ' = 2, ' CNAME ' = ' notice ', ' pid ' = 0 ), Array ' CID ' = 3, ' CNAME ' = ' domestic News ', ' PID ' = 1 ), Array ' CID ' = 4, ' CNAME ' = ' international News ', ' PID ' = 1 ), Array ' CID ' = 5, ' CNAME ' = ' Beijing News ', ' PID ' = 3 ), Array ' CID ' = 6, ' CNAME ' = ' Shanghai News ', ' PID ' = 3 ), Array ' CID ' = 7, ' CNAME ' = ' emergency notice ', ' PID ' = 2 ), Array ' CID ' = 8, ' CNAME ' = ' general notice ', ' PID ' = 2 ), ); /** * Generate Menu * * @param array $data raw data * @param integer $PID The parent ID of the current classification * @return data after array processing */ function Createmenutree ($data = Array (), $pid = 0) { if (empty ($data)) { return Array (); } static $level = 0; $returnArray = Array (); foreach ($data as $node) { if ($node [' pid '] = = $pid) { $returnArray [] = Array ( ' CID ' = $node [' CID '], ' CNAME ' = $node [' CNAME '], ' Level ' = $level ); if (Haschild ($node [' CID '], $data)) { $level + +; $returnArray = Array_merge ($returnArray, Createmenutree ($data, $node [' CID ']); $level--; } } } return $returnArray; } /** * Check if there are sub-categories * * @param integer $cid ID of the current category * @param array $data raw data * @return Boolean if there are sub-categories */ function Haschild ($cid, $data) { $hasChild = false; foreach ($data as $node) { if ($node [' pid '] = = $cid) { $hasChild = true; Break } } return $hasChild; } Header (' content-type:text/html; Charset=utf-8 '); $result = Createmenutree ($cates); foreach ($result as $row) { for ($i = 0, $i < $row [' level ']; $i + +) { echo "T"; } echo $row [' CNAME ']. "N"; } ?> |