php无限极分类

两种方法实现:

一、function generateTree($array,$pid=0,$level=0){

        $arr = array();
        foreach($array as $v){
            if($v['pid']==$pid){
                $v['level'] = $level;
                $v['html'] = str_repeat('--',$level);
                $arr[] = $v;
                $arr = array_merge($arr,generateTree($array,$v['f_id'],$level+1));
            }
        }
        return $arr;
    }
    $dbh = new PDO('mysql:host=127.0.0.1;dbname=package', 'root', ' ');
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $dbh->exec('set names utf8');
    $sql = "select * from floder_package";
    $items = $dbh->query($sql)->fetchAll(PDO::FETCH_ASSOC);
    print_r(generateTree($items));  
    

   二、 function generateTree($val){
         foreach ($val as $item) {
            $val[$item['pid']]['son'][$item['f_id']] = &$val[$item['f_id']];
        }
        return isset($val[0]['son']) ? $val[0]['son'] : array();
    }
    $dbh = new PDO('mysql:host=127.0.0.1;dbname=package', 'root', ’ ');
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $dbh->exec('set names utf8');
    $sql = "select * from table";
    $items = $dbh->query($sql)->fetchAll(PDO::FETCH_ASSOC);
    foreach ($items as $key => $value) {
        $val[$value['f_id']] = $value;
    }

    print_r(generateTree($val)); 

注:第二种方法的数组的key需与唯一id一致;代码中有代码参考

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值