php关于无限分类的树状输出(id,name,pid)类型

php关于无限分类的树状输出(id,name,pid)类型

1.简单demo实例

<?php
//数组层级缩进转换
function array2level($array, $pid = 0, $level = 1) {
    static $list = [];
    foreach ($array as $v) {
        if ($v['pid'] == $pid) {
            $v['level'] = $level;
            $list[] = $v;
            array2level($array, $v['id'], $level + 1);
        }
    }

    return $list;
}
//形成树状格式
function arr2tree($tree, $rootId = 0,$level=1) {  
    $return = array();  
    foreach($tree as $leaf) {  
        if($leaf['pid'] == $rootId) {
            $leaf["level"] = $level;
            foreach($tree as $subleaf) {  
                if($subleaf['pid'] == $leaf['id']) {
                    $leaf['children'] = arr2tree($tree, $leaf['id'],$level+1);  
                    break;  
                }  
            } 
            $return[] = $leaf; 
        } 
    } 
    return $return;  
}

$arrCate = array(  //待排序数组
  array( 'id'=>1, 'name' =>'顶级栏目一', 'pid'=>0),
  array( 'id'=>2, 'name' =>'顶级栏目二', 'pid'=>0),
  array( 'id'=>3, 'name' =>'栏目三', 'pid'=>1),
  array( 'id'=>4, 'name' =>'栏目四', 'pid'=>3),
  array( 'id'=>5, 'name' =>'栏目五', 'pid'=>4),
  array( 'id'=>6, 'name' =>'栏目六', 'pid'=>2),
  array( 'id'=>7, 'name' =>'栏目七', 'pid'=>6),
  array( 'id'=>8, 'name' =>'栏目八', 'pid'=>6),
  array( 'id'=>9, 'name' =>'栏目九', 'pid'=>7),
);

$tree = arr2tree($arrCate);
print_r($tree);

$result=array2level($arrCate);
print_r($result);

$tree打印结果为:


Array
(
    [0] => Array
        (
            [id] => 1
            [name] => 顶级栏目一
            [pid] => 0
            [level] => 1
            [children] => Array
                (
                    [0] => Array
                        (
                            [id] => 3
                            [name] => 栏目三
                            [pid] => 1
                            [level] => 2
                            [children] => Array
                                (
                                    [0] => Array
                                        (
                                            [id] => 4
                                            [name] => 栏目四
                                            [pid] => 3
                                            [level] => 3
                                            [children] => Array
                                                (
                                                    [0] => Array
                                                        (
                                                            [id] => 5
                                                            [name] => 栏目五
                                                            [pid] => 4
                                                            [level] => 4
                                                        )

                                                )

                                        )

                                )

                        )

                )

        )

    [1] => Array
        (
            [id] => 2
            [name] => 顶级栏目二
            [pid] => 0
            [level] => 1
            [children] => Array
                (
                    [0] => Array
                        (
                            [id] => 6
                            [name] => 栏目六
                            [pid] => 2
                            [level] => 2
                            [children] => Array
                                (
                                    [0] => Array
                                        (
                                            [id] => 7
                                            [name] => 栏目七
                                            [pid] => 6
                                            [level] => 3
                                            [children] => Array
                                                (
                                                    [0] => Array
                                                        (
                                                            [id] => 9
                                                            [name] => 栏目九
                                                            [pid] => 7
                                                            [level] => 4
                                                        )

                                                )

                                        )

                                    [1] => Array
                                        (
                                            [id] => 8
                                            [name] => 栏目八
                                            [pid] => 6
                                            [level] => 3
                                        )

                                )

                        )

                )

        )

)

$result打印结果为:


Array
(
    [0] => Array
        (
            [id] => 1
            [name] => 顶级栏目一
            [pid] => 0
            [level] => 1
        )

    [1] => Array
        (
            [id] => 3
            [name] => 栏目三
            [pid] => 1
            [level] => 2
        )

    [2] => Array
        (
            [id] => 4
            [name] => 栏目四
            [pid] => 3
            [level] => 3
        )

    [3] => Array
        (
            [id] => 5
            [name] => 栏目五
            [pid] => 4
            [level] => 4
        )

    [4] => Array
        (
            [id] => 2
            [name] => 顶级栏目二
            [pid] => 0
            [level] => 1
        )

    [5] => Array
        (
            [id] => 6
            [name] => 栏目六
            [pid] => 2
            [level] => 2
        )

    [6] => Array
        (
            [id] => 7
            [name] => 栏目七
            [pid] => 6
            [level] => 3
        )

    [7] => Array
        (
            [id] => 9
            [name] => 栏目九
            [pid] => 7
            [level] => 4
        )

    [8] => Array
        (
            [id] => 8
            [name] => 栏目八
            [pid] => 6
            [level] => 3
        )

)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值