PHP实现无限级分类

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

假定给定的数据如下:

$data = array(
['id'=>1,'city'=>'北京','parent'=>0],
['id'=>2,'city'=>'上海','parent'=>0],
['id'=>3,'city'=>'深圳','parent'=>0],

['id'=>4,'city'=>'朝阳','parent'=>1],
['id'=>5,'city'=>'浦东','parent'=>2],
['id'=>6,'city'=>'福田','parent'=>3],

['id'=>7,'city'=>'三里屯','parent'=>4],
['id'=>8,'city'=>'浦东机场','parent'=>5],
['id'=>9,'city'=>'岗厦','parent'=>6],

['id'=>10,'city'=>'岗厦村','parent'=>9],
);

子孙树

function echoCityName($arr,$id){
    if($id !== 0){
        echo $arr[$id-1]['city'];
        getChilrend($arr,$id);
    }else{
        echo 'id不存在';
    }

}

function getChilrend($arr,$id=0){
    //echo $arr[$id]['city'];
    foreach($arr as $k=>$v){
        if($v['parent'] == $id){
            echo $v['city'];
            return getChilrend($arr,$v['id']);
        }
    }
    return ;
}

echoCityName($dataRes,$id=3);//寻找id为3的子孙栏目

结果

子孙树

家谱树

function getParents($arr,$id){
    foreach ($arr as $k => $v){
        if($v['id'] == $id){
            echo $v['city'];
            return getParents($arr ,$v['parent']);
        }

    }
    return ;
}
getParents($dataRes,$id=10);
echo '</br>';
getParents($dataRes,$id=8);
echo '</br>';
getParents($dataRes,$id=4);

结果

家谱树
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 数据格式: 非递归算法 递归算法 最终结果 原创作品,允许转载,转载时请务必以超链接形式标明原始出处、作者信息和本...
    jeferwang阅读 285评论 0 3
  • 前言 无限极分类是我很久前学到知识,今天在做一个项目时,发现对其概念有点模糊,所以今天就来说说无限极分类。 首先来...
    阿V薄荷加可乐阅读 28,830评论 25 60
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,269评论 19 139