php无限极分类

来源:互联网 发布:i see软件 编辑:程序博客网 时间:2024/05/19 16:48

两种方法实现:

一、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一致;代码中有代码参考

原创粉丝点击