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 '
'; getParents($dataRes,$id=8); echo '
'; getParents($dataRes,$id=4);

结果

家谱树

你可能感兴趣的:(PHP实现无限级分类)