先上数据库
--
-- 表的结构 `pre_aa_menu`
--
CREATE TABLE IF NOT EXISTS `pre_aa_menu` (
`menu_id` int(11) NOT NULL AUTO_INCREMENT,
`menu` varchar(20) NOT NULL,
`menu_grade` int(11) NOT NULL,
`menu_superior` int(11) NOT NULL,
`display` tinyint(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`menu_id`),
UNIQUE KEY `menu_id` (`menu_id`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk ;
--
-- 转存表中的数据 `pre_aa_menu`
--
INSERT INTO `pre_aa_menu` (`menu_id`, `menu`, `menu_grade`, `menu_superior`, `display`) VALUES
(1, '计算机', 1, 0, 1),
(2, '编程', 2, 1, 0),
(3, '网络', 2, 1, 0),
(4, 'PHP与MySql', 3, 2, 0),
(5, 'C语言', 3, 2, 0),
(6, '网页制作', 3, 3, 0),
(7, 'TCP、IP协议', 3, 3, 0),
(8, '数学', 1, 0, 0),
(9, '高等数学', 2, 8, 0),
(10, '线性代数', 3, 9, 0),
(11, '离散数学', 3, 9, 0),
(12, '初等数学', 2, 8, 0),
(13, '文学', 1, 0, 0),
(14, '中国文学', 2, 13, 0),
(15, 'php', 4, 4, 0),
(16, 'mysql', 4, 4, 0);
$datas = DB::fetch_all("SELECT * FROM %t ORDER BY display ASC", array($this->_table));
foreach ($datas as $data){
$menu[$data['menu_grade']][$data['menu_id']] = $data;
}
$max = count($menu);
for($i=0;$i<$max;$i++){
foreach ($menu[$max-$i] as $menus){
$menu[$menus['menu_grade']-1][$menus['menu_superior']]['next'][$menus['menu_id']] = $menus;
}
}
$last = $menu[1];
print_r ($last);