PHP——无限级分类

<?php
/*
 * 无限级分类
 * @param array $items 二维数组数据
 * return $tree
 */
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' => 1, 'name' => '集团'),
    3 => array('id' => 3, 'pid' => 2, 'name' => 'xx部'),
    4 => array('id' => 4, 'pid' => 3, 'name' => 'xx科'),
    5 => array('id' => 5, 'pid' => 1, 'name' => '分公司1'),
    6 => array('id' => 6, 'pid' => 5, 'name' => 'xx部'),
);

$tree = generateTree($items);
print_r($tree);

运行结果

Array
(
    [0] => Array
        (
            [id] => 1
            [pid] => 0
            [name] => 总公司
            [son] => Array
                (
                    [0] => Array
                        (
                            [id] => 2
                            [pid] => 1
                            [name] => 集团
                            [son] => Array
                                (
                                    [0] => Array
                                        (
                                            [id] => 3
                                            [pid] => 2
                                            [name] => xx部
                                            [son] => Array
                                                (
                                                    [0] => Array
                                                        (
                                                            [id] => 4
                                                            [pid] => 3
                                                            [name] => xx科
                                                        )

                                                )

                                        )

                                )

                        )

                    [1] => Array
                        (
                            [id] => 5
                            [pid] => 1
                            [name] => 分公司1
                            [son] => Array
                                (
                                    [0] => Array
                                        (
                                            [id] => 6
                                            [pid] => 5
                                            [name] => xx部
                                        )

                                )

                        )

                )

        )

)

Process finished with exit code 0

猜你喜欢

转载自www.cnblogs.com/coder2020/p/12218120.html
今日推荐