您的位置:首页 > 编程语言 > PHP开发

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

2017-04-21 17:17 633 查看

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] => 栏目四
4000
[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
)

)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  php 实例 函数