美文网首页
php递归实现无限级分类树

php递归实现无限级分类树

作者: 爱盼小站 | 来源:发表于2019-01-23 14:46 被阅读0次

http://www.php.cn/php-weizijiaocheng-353267.html

递归算法

/*
* 递归实现无限极分类
* @param $array 分类数据
* @param $pid 父ID
* @param $level 分类级别
* @return $list 分好类的数组 直接遍历即可 $level可以用来遍历缩进
*/
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
            getTree($array, $value['id'], $level+1);
        }
}
    return $list;
}

function generateTree($array){
    //第一步 构造数据
    $items = array();
    foreach($array as $value){
        $items[$value['id']] = $value;
    }
    //第二部 遍历数据 生成树状结构
    $tree = array();
    //遍历构造的数据
    foreach($items as $key => $value){
        //如果pid这个节点存在
        if(isset($items[$value['pid']])){
            //把当前的$value放到pid节点的son中 注意 这里传递的是引用 为什么呢?
            $items[$value['pid']]['son'][] = &$items[$key];
        }else{
            $tree[] = &$items[$key];
        }
}
    return $tree;
}

相关文章

  • php递归实现无限级分类树

    http://www.php.cn/php-weizijiaocheng-353267.html

  • PHP递归实现无限级分类

    PHP递归实现无限级分类 在一些复杂的系统中,要求对信息栏目进行无限级的分类,以增强系统的灵活性。那么PHP是如何...

  • php实现无限极分类

    一、两种实现php无限极分类 设置原始数据 1. 使用php递归实现php无限极分类 通过foreach循环实现无...

  • PHP实现无限级分类(递归+引用)

    原始数据 数据库image 打印到页面image 递归 递归的思路就是【找儿子】,也就是循环所有数据,找到每条数据...

  • PHP实现无限级分类(递归+引用)

    原始数据 数据库原始数据 打印到页面原始数据 递归 递归的思路就是【找儿子】,也就是循环所有数据,找到每条数据的所...

  • PHP实现无限级分类

    php中经常用到无限级分类,牵涉到两种情况 找指定栏目的子孙栏目,即子孙树 找指定的栏目的父栏目/父栏目....顶...

  • PHP实现无限级分类

    数据格式: 非递归算法 递归算法 最终结果 原创作品,允许转载,转载时请务必以超链接形式标明原始出处、作者信息和本...

  • php 简单的实现无限级分类树

    php数据表

  • php 递归无限分类

    参考因为递归的效率相对来说比较低,所以很少使用,尤其是在查询数据库的时候对数据库的长时间占用很不合理。 但是递归遍...

  • php无限极分类

    递归--无限极分类 递归--子孙树转二维数组 可以配合Nestable使用 递归--获取树所有叶子节点 结果1 结...

网友评论

      本文标题:php递归实现无限级分类树

      本文链接:https://www.haomeiwen.com/subject/ozwjjqtx.html