阅读 96

ThinkPHP无限级分类(递归)

代码演示

没什么可说的直接看代码

 ‘1‘,
                ‘name‘ => ‘一级菜单‘,
                ‘pid‘ => ‘0‘,
                ‘path‘ => ‘0‘,
            ],
            [
                ‘id‘ => ‘2‘,
                ‘name‘ => ‘二级菜单‘,
                ‘pid‘ => ‘0‘,
                ‘path‘ => ‘0‘,
            ],
            [
                ‘id‘ => ‘3‘,
                ‘name‘ => ‘一级菜单-1‘,
                ‘pid‘ => ‘1‘,
                ‘path‘ => ‘0-1‘,
            ],
            [
                ‘id‘ => ‘4‘,
                ‘name‘ => ‘二级菜单-1‘,
                ‘pid‘ => ‘2‘,
                ‘path‘ => ‘0-2‘,
            ],
            [
                ‘id‘ => ‘5‘,
                ‘name‘ => ‘一级菜单-1-1‘,
                ‘pid‘ => ‘3‘,
                ‘path‘ => ‘0-1-3‘,
            ],
            [
                ‘id‘ => ‘6‘,
                ‘name‘ => ‘二级菜单-1-1‘,
                ‘pid‘ => ‘4‘,
                ‘path‘ => ‘0-2-4‘,
            ],
            [
                ‘id‘ => ‘7‘,
                ‘name‘ => ‘二级菜单-1-2‘,
                ‘pid‘ => ‘4‘,
                ‘path‘ => ‘0-2-4‘,
            ],
            [
                ‘id‘ => ‘8‘,
                ‘name‘ => ‘三级菜单‘,
                ‘pid‘ => ‘0‘,
                ‘path‘ => ‘0‘,
            ],
            [
                ‘id‘ => ‘9‘,
                ‘name‘ => ‘二级菜单-1-3‘,
                ‘pid‘ => ‘4‘,
                ‘path‘ => ‘0-2-4-6‘,
            ],
            [
                ‘id‘ => ‘10‘,
                ‘name‘ => ‘三级菜单-1‘,
                ‘pid‘ => ‘8‘,
                ‘path‘ => ‘0-8‘,
            ],
            [
                ‘id‘ => ‘11‘,
                ‘name‘ => ‘一级菜单-1-4‘,
                ‘pid‘ => ‘5‘,
                ‘path‘ => ‘0-8‘,
            ],
        ];
        return $rows;
    }

    public function index()
    {
        //获取从第0级下的所有分类(pid==0)
        $list = $this->build_tree(0);
        return json($list);
    }

    /**
     * 递归子级
     * @param $list
     * @param $id
     * @return array
     */
    public function findChild($list, $id)
    {
        $child = [];
        foreach ($list as $key => $item) {
            //如果pid等于传进来
            if ($item[‘pid‘] == $id) {
                $child[] = $item;
            }
        }
        return $child;
    }
    /**
     * 获取当前级别的子级
     * @param $root_id /第几层
     * @return null
     */
    public function build_tree($root_id)
    {
        //获取假数据
        $list = $this->arr();
        //查找指定级数
        $tree = $this->findChild($list, $root_id);
        if (empty($tree)) {
            return null;
        }
        //遍历获取到的层级得到下级分类
        foreach ($tree as $key => $item) {
            //递归调用自己 查找每个元素下的分类
            $child = $this->build_tree($item[‘id‘]);
            //如果有子类就放入数组中
            if ($child != null){
                $tree[$key][‘child‘] = $child;
            }
        }
        return $tree;
    }
} 

预览结果

原文:https://www.cnblogs.com/orginly/p/14645256.html

文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐