<? Php $ Cates = array ( Array ( 'Cid' => 1, 'Cname' => 'News ', 'Pid '=> 0 ),
Array ( 'Cid' => 2, 'Cname' => 'notification ', '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 notification ', 'Pid '=> 2 ), Array ( 'Cid' => 8, 'Cname' => 'General notification ', 'Pid '=> 2 ), ); /** * Generate menu * * @ Param array $ raw data * @ Param integer $ parent id of the current pid category * @ Return array data after 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 whether subcategories exist. * * @ Param integer $ cid id of the current category * @ Param array $ raw data * @ Return boolean indicates whether a subcategory exists. */ 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 "; } ?> |