博客列表 >php递归

php递归

南鸢离梦的博客
南鸢离梦的博客原创
2019年10月16日 16:37:47997浏览
// 多分类列表
public function cate()
{
    $cate = doCate::all()->toArray();
    $cate = $this->getTree($cate);
    for ($i=0;$i<sizeof($cate);$i++){
        $cate[$i]['title'] =  str_repeat('&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-----', $cate[$i]['level']).$cate[$i]['title'];
    }

    $this->assign('cate',$cate);
    return $this->fetch();
}


// 递归分类
function getTree($array, $pid =0, $level = 0){

    //声明静态数组,避免递归调用时,多次声明导致数组覆盖
    static $list = [];
    foreach ($array as $key => $value){
        //第一次遍历,找到父节点为根节点的节点 也就是pid=0的节点
        if ($value['pid'] == $pid){
            //父节点为根节点的节点,级别为0,也就是第一级
            $value['level'] = $level;
            //把数组放到list中
            $list[] = $value;
            //把这个节点从数组中移除,减少后续递归消耗
            unset($array[$key]);
            //开始递归,查找父ID为该节点ID的节点,级别则为原级别+1
            $this->getTree($array, $value['id'], $level+1);

        }
    }
    return $list;
}
{volist name="cate" id="v"}
 <tr cate-id="{$v.id}" fid={$v.pid} >

     <td>{$v.id}</td>
     <td>
         <i class="layui-icon x-show" status='true'>&#xe623;</i>
         <?php echo $v['title']?>
     </td>

     <td>
         <button class="layui-btn layui-btn layui-btn-xs"  onclick="disCate({$v.id},{$v.status})" n>{if $v.status == 1}正常{else/}已禁用{/if}</button>
     </td>
     <td class="td-manage">
         <button class="layui-btn layui-btn layui-btn-xs"  onclick="xadmin.open('编辑','editCate/?id={$v.id}',600,400)" >
             <i class="layui-icon">&#xe642;</i>编辑
         </button>
         <button class="layui-btn layui-btn-warm layui-btn-xs"  onclick="xadmin.open('编辑','addCate/?pid={$v.id}',600,400)" >
             <i class="layui-icon">&#xe642;</i>添加子分类
         </button>
     </td>
 </tr>
{/volist}





声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议