最高效的无限级菜单生成方法
$Menu= M('Menu'); $items= $Menu->order('pid, sort')->select();//按pid从小到大排序,以保证父节点在前,子节点在后。sort是同一层次节点的显示顺序。 $menu = array(); foreach ($items as $v) { $menu[$v['_id']] = $v; $menu[$v['_id']]['items'] = array();//items存放当前节点的所有子节点。 if($v['pid'] != 0) { $menu[$v['pid']]['items'][$v['_id']] = &$menu[$v['_id']]; } } foreach ($menu as $k=>$v) { if($v['pid'] != 0) { unset($menu[$k]); } }
OT里面有对该功能的封装,目录位置ApplicationCommonCommonfunction.php文件里的list_to_tree函数,function.php文件里面还有很多功能函数大家可以看看
。