辅助功能:
function build_menu($menus, $parent = 0, $level = 0)
{
$ret = '<ul>';
foreach($menus as $m)
{
if($m->parent_id == $parent)
{
$ret .= '<li>'.set_link($m->url, $m->title);
$ret .= build_menu($menus, $m->id, $level + 1);
$ret .= '</li>';
}
}
return $ret.'</ul>';
}
呼叫:
$data['query'] = $this->db->get('menus');
$data['menu'] = build_menu($data['query']->result());
该函数只构建三个叶子,例如,如果父级为0,则将呈现所有带有parent_id = 0的菜单,但是如何在不对mysql进行多查询的情况下渲染完整的三个菜单?
的print_r:
Array
(
[0] => stdClass Object
(
[id] => 1
[title] => menu1
[url] => menu1
[parent_id] => 0
)
[1] => stdClass Object
(
[id] => 2
[title] => menu2
[url] => menu2
[parent_id] => 0
)
[2] => stdClass Object
(
[id] => 3
[title] => menu3
[url] => menu3
[parent_id] => 3
)
[3] => stdClass Object
(
[id] => 4
[title] => menu4
[url] => menu4
[parent_id] => 6
)
[4] => stdClass Object
(
[id] => 6
[title] => test
[url] => test
[parent_id] => 3
)
[5] => stdClass Object
(
[id] => 7
[title] => test
[url] => test
[parent_id] => 4
)
)