php 无限极分类(不需要递归得方式)

场景

  • 网站得节点存储都是无限级分类设计得, 然后一般得都是采用递归方式获取整合过得数据
  • 下面得方式可以避免因为递归引起得性能损耗

转载地址

  • https://blog.csdn.net/gxdvip/article/details/2443480

原文

function generateTree($items){
    $tree = array();
    foreach($items as $item){
        if(isset($items[$item['pid']])){
            $items[$item['pid']]['son'][] = &$items[$item['id']];
        }else{
            $tree[] = &$items[$item['id']];
        }
    }
    return $tree;
}
$items = array(
    1 => array('id' => 1, 'pid' => 0, 'name' => '安徽省'),
    2 => array('id' => 2, 'pid' => 0, 'name' => '浙江省'),
    3 => array('id' => 3, 'pid' => 1, 'name' => '合肥市'),
    4 => array('id' => 4, 'pid' => 3, 'name' => '长丰县'),
    5 => array('id' => 5, 'pid' => 1, 'name' => '安庆市'),
);
print_r(generateTree($items));

原文分析

  • 函数中声明一个变量, 将地址导向一级分类数据得地址
  • 循环数组, 如果当前得单元含有父级得话, 则在父级增加一个单元[son][] ; 并且这个单元指向当前单元的地址空间; 这样就构成了一个循环的分类; 不然分类会在二级的时候断掉

猜你喜欢

转载自blog.csdn.net/cominglately/article/details/82081098