• 技术文章 > 后端开发 > php教程

    php无限极分类的代码示例(递归和树)

    不言 不言 2019-02-12 14:02:45 转载 232

    本篇文章给大家带来的内容是关于php无限极分类的代码示例(递归和树),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

    (1) .递归实现

    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;
    }

    结果如图:

    (2) .树结构

    function getTree($items,$pid ="pid") {
        $map  = [];
        $tree = []; 
    foreach ($items as &$it){ $map[$it['id']] = &$it; }  
    //数据的ID名生成新的引用索引树   
    foreach ($items as &$at){
            $parent = &$map[$at[$pid]];    
    if($parent) {
                $parent['children'][] = &$at;
            }else{
                $tree[] = &$at;
            }
        }
    return $tree;
    }

    结果如图:

    以上就是php无限极分类的代码示例(递归和树)的详细内容,更多请关注php中文网其它相关文章!

    第五期线上培训班
    专题推荐: php
    上一篇:php性能优化的理论知识讲解 下一篇:PHP7匿名类的用法示例(代码)

    相关文章推荐

    • 深入分析PHP引用(&)_php基础 • php自动提交表单的方法(基于fsockopen与curl)_php技巧 • php时间计算相关问题小结_php技巧 • PHP函数之日期时间函数date()使用详解_php基础

    全部评论我要评论

  • 取消 发布评论 发送
  • PHP中文网