无限级分类菜单
首页->学习资料->编程语言->php教程->php技巧 关键词: 发布时间:2018-08-02 06:57:30 浏览次数:1178
private function categoriesTree($categories, $fid = 0, $level = 0)
{
    static $tree = [];
    foreach ($categories as $key => $category) {
        if ($fid == $category['CategoryID']) {
            $category['level'] = $level;
            $tree[] = $category;
            unset($categories[$key]);
            self::categoriesTree($categories, $category['ID'], $level + 1);
        }
    }
    return $tree;
}




/*     * 获得递归完的数据,遍历生成分类     */    $array = getTree($array);    foreach($array) as $value{       echo str_repeat('--', $value['level']), $value['name'].'<br />';    }



这种方式也不错:


    /**

     * 生成树:无限级菜单

     *

     * @param array $items 数据

     * @param string $idFieldName 主键字段名,一般为id

     * @param string $fIdFieldName  上级id名,如:fid,pid之类

     * @return array

     */

    public function toTree($items, $idFieldName, $fIdFieldName)

    {

        $map = [];

        $tree = [];


        if($items){

            //数据的ID名生成新的引用索引树

            foreach ($items as &$it) {

                $map[$it[$idFieldName]] = &$it;

            }

            foreach ($items as &$it) {

                $parent = &$map[$it[$fIdFieldName]];

                if ($parent) {

                    $parent['son'][] = &$it;

                } else {

                    $tree[] = &$it;

                }

            }

            $tree=treeLevel($tree);//上面的level超过2层就不对了

        }


        return $tree;

    }


function treeLevel($tree, $level = 1)

{

    foreach ($tree as $i => &$item) {

        $item['level'] = $level;

        if (isset($item['son'])) {

            treeLevel($item['son'], $level + 1);

        }

    }

    return $tree;

}



这种更简单:


/**

 * 无限递归树

 */

function make_tree($list, $pk = 'id', $pid = 'parent_id', $child = 'son', $root = 0)

{

    $tree = array();

    $packData = array();

    foreach ($list as $data) {

        $packData[$data[$pk]] = $data;

    }

    foreach ($packData as $key => $val) {

        if ($val[$pid] == $root) {//代表跟节点

            $tree[] =& $packData[$key];

        } else {

            //找到其父类

            $packData[$val[$pid]][$child][] =& $packData[$key];

        }

    }

    return $tree;

}


赞:(0)
踩:(0)
相关文章
phpexcel设置行高及列宽,背景颜色,
单点登录sso原理及php实现方式及de
在php中用curl请求java接口无法获
免费ip地址查询接口
php,java,android, aes加解密-加密
地图上计算两点间的距离
关于百度地图的一些技巧
php中empty,is_null,isset的区别
windows及linux下composer安装教程
一种精妙的数据查询与存储方式
热门文章
win7中将文件拷贝到虚拟机linux下
phpexcel设置行高及列宽,背景颜色,
rabbitmq无法启动
intellij idea不显示git push按钮
php7中使用mongodb的aggregate进行
centos7.4 64位下swoole安装及配置
laravel页面静态化的方法
navicate连接mycat报1184错误
单点登录sso原理及php实现方式及de
devops-jenkins容器为pending状态
好评文章
phpexcel设置行高及列宽,背景颜色,
php7中使用mongodb的aggregate进行
intellij idea打开文件所在文件夹
windows下使用MongoDB Compass Com
win7中将文件拷贝到虚拟机linux下
laravel 中悲观锁 & 乐观锁的使用
单点登录sso原理及php实现方式及de
navicate连接mycat报1184错误
rabbitmq无法启动
laravel整合dingo/api方法步骤:jwt
标签
rabbitmq mysql备份 elasticsearch golang swoole
我的项目
【github】www.github.com/hurong241
【码云】gitee.com/hu_rong/projects
【docker hub】hub.docker.com/repositories/hurong241
【packagist】packagist.org/users/hurong241/packages
站点信息
建站时间:2011年
文章数:610篇
浏览数:953068
粤ICP备18028092号-1  微信:hurong241