- php中经常用到无限级分类,牵涉到两种情况
- 找指定栏目的子孙栏目,即子孙树
- 找指定的栏目的父栏目/父栏目....顶级栏目 家谱树
假定给定的数据如下:
$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);
结果










网友评论