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

来源:互联网 发布:罗克韦尔自动化 知乎 编辑:程序博客网 时间:2024/06/05 10:11

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        ))
0 0
原创粉丝点击