无限极分类实现-PHP版

原创
2018/07/04 16:54
阅读数 304

无限极分类实现-PHP版

<?php 

$address = array(
    array('id'=>1  , 'address'=>'安徽' , 'pid' => 0),
    array('id'=>2  , 'address'=>'江苏' , 'pid' => 0),
    array('id'=>3  , 'address'=>'合肥' , 'pid' => 1),
    array('id'=>4  , 'address'=>'庐阳区' , 'pid' => 3),
    array('id'=>5  , 'address'=>'大杨镇' , 'pid' => 4),
    array('id'=>6  , 'address'=>'南京' , 'pid' => 2),
    array('id'=>7  , 'address'=>'玄武区' , 'pid' => 6),
    array('id'=>8  , 'address'=>'梅园新村街道', 'pid' => 7),
    array('id'=>9  , 'address'=>'上海' , 'pid' => 0),
    array('id'=>10 , 'address'=>'黄浦区' , 'pid' => 9),
    array('id'=>11 , 'address'=>'外滩' , 'pid' => 10),
    array('id'=>12 , 'address'=>'安庆' , 'pid' => 1)
    );



$tree = [];

function vTree($data, $pid=0, $step = 0, &$tree = []){
        foreach ($data as $key => $val) {
            if ($val['pid'] == $pid) {
                $val['name'] = str_repeat('-', $step) . "&nbsp;" . $val['name'];
                $tree[] = $val;
                vTree($data, $val['id'], $step+1, $tree);
            }
        }

        return $tree;
    }


foreach (vTree($address) as $key => $val) {
	echo $val['address'] . '<br />';
}

function dump($data){
	echo "<pre>";

	print_r($data);
	echo "</pre>";
}

?>

蚕食结果:

安徽
|—  合肥
|—  —  庐阳区
|—  —  —  大杨镇
|—  —  安庆
江苏
|—  南京
|—  —  玄武区
|—  —  —  梅园新村街道
上海
|—  黄浦区
|—  —  外滩

无限极分类与语言无关, 关键是解决思维。 其他语言自己可以参考实现。。。

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
0 收藏
0
分享
返回顶部
顶部