求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> 展开
同一个表中有多级关系,具体详情请看下面的代码及效果图。这是我目前处理的方式,但是这个效率是非常低。。查询的时候反复查了无数次。。
展示的时候也是好几层循环输出的。。有高人能帮忙优化一下不? 或者提供一下思想,麻烦尽量说细一点,感激不尽。
代码如下:
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> 展开
1个回答
展开全部
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的结构组织一下页面显示就好了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询