无限极分类查询及归类

一、无限极分类查询

//函数部分
function genTree($items){
    $tree = array(); //格式化好的树
    foreach ($items as $key=>$item){
        $items[$key]['data'] = array();
        if (isset($items[$item['parentid']])){
            $items[$item['parentid']]['data'][] = &$items[$item['id']];
        }else{
            $tree[] = &$items[$item['id']];
        }
    }
    return $tree;
}

// 查询省市区
   $provice = pgquery("select * from address where parentid!=0 order by id asc","all");
   //构造数据
   $items = array();
   foreach($provice as $value){
       $items[$value['id']] = $value;
   }
   $address = genTree($items); 

二、无限极分类归类显示
   // 函数部分
   function getTree($array, $pid =0, $level = 0){
    //声明静态数组,避免递归调用时,多次声明导致数组覆盖
    static $list = [];
    foreach ($array as $key => $value){
        //第一次遍历,找到父节点为根节点的节点 也就是pid=0的节点
        if ($value['parentid'] == $pid){
            //父节点为根节点的节点,级别为0,也就是第一级
            $value['level'] = $level;
            //把数组放到list中
            $list[] = $value;
            //把这个节点从数组中移除,减少后续递归消耗
            unset($array[$key]);
            //开始递归,查找父ID为该节点ID的节点,级别则为原级别+1
            getTree($array, $value['id'], $level+1);

        }
    }
    return $list;
}

// 调用
$list = getTree($list);
   foreach($list as $key=>$value){
       $list[$key]['nbsp'] = str_repeat('ㄴ', $value['level']);
   }
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值