求PHP多级菜单数据查询及展示代码的算法优化(全部分奉上)

求PHP多级菜单数据查询及展示代码的算法优化同一个表中有多级关系,具体详情请看下面的代码及效果图。这是我目前处理的方式,但是这个效率是非常低。。查询的时候反复查了无数次。... 求PHP多级菜单数据查询及展示代码的算法优化

同一个表中有多级关系,具体详情请看下面的代码及效果图。这是我目前处理的方式,但是这个效率是非常低。。查询的时候反复查了无数次。。
展示的时候也是好几层循环输出的。。有高人能帮忙优化一下不? 或者提供一下思想,麻烦尽量说细一点,感激不尽。
代码如下:
SQL处理
public function empowerList(){
$sql="select ueid,pid,name,sort from userempower where pid=0 order by sort DESC,ueid ASC";
$datas=$this->db->getAll($sql);
if(!empty($datas)){
foreach($datas as $k=>$v){
$sql="select ueid,pid,name,sort from userempower where pid=".$datas[$k]['ueid']." order by sort DESC,ueid ASC";
$datas[$k]['child']=$this->db->getAll($sql);
}
if(!empty($datas[$k]['child'])){
foreach($datas[$k]['child'] as $kc=>$vc){
$sql="select ueid,pid,name,sort from userempower where pid=".$datas[$k]['child'][$kc]['ueid']." order by sort DESC,ueid ASC";
$datas[$k]['child'][$kc]['child']=$this->db->getAll($sql);
}
}
}
return $datas;
}

输出:
<table class="table table-striped">
<tr>
<th>ID</th>
<th>权限名称</th>
<th>排序</th>
</tr>
{foreach from=$empowerList item=el}
<tr>
<td>{$el.ueid}</td>
<td>{$el.name}</td>
<td>{$el.sort}</td>
</tr>
{foreach from=$el.child item=elc}
<tr>
<td>{$elc.ueid}</td>
<td><font style="color:#ccc;">|-- </font>{$elc.name}</td>
<td>{$elc.sort}</td>
</tr>
{foreach from=$elc.child item=elcc}
<tr>
<td>{$elcc.ueid}</td>
<td><font style="color:#ccc;">     |-- </font>{$elcc.name}</td>
<td>{$elcc.sort}</td>
</tr>
{/foreach}
{/foreach}
{/foreach}
</table>
展开
 我来答
百度网友9f01ef5
推荐于2016-08-01 · 超过20用户采纳过TA的回答
知道答主
回答量:67
采纳率:0%
帮助的人:40.8万
展开全部
public function empowerList(){
$sql="select ueid,pid,name,sort from userempower order by sort DESC,ueid ASC";
$datas=$this->db->getAll($sql);
$list = array();
if(!empty($datas)){
foreach($datas as $k=>$v){
$list[$v['pid']][] = $v;
}
}
return $list;
}


然后你在根据$list的结构组织一下页面显示就好了

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式