<?php
$data = array (
array (
'id' => 4,
'category_name' => '要闻',
'pid' => 3,
'created_at' => '2018-06-21 17:33:55',
'updated_at' => '2018-06-21 17:33:55',
),
array (
'id' => 3,
'category_name' => '新闻',
'pid' => 0,
'created_at' => '2018-06-21 17:33:45',
'updated_at' => '2018-06-21 17:33:45',
),
array (
'id' => 5,
'category_name' => '企业服务',
'pid' => 3,
'created_at' => '2018-06-21 17:34:12',
'updated_at' => '2018-06-21 17:34:12',
),
array (
'id' => 6,
'category_name' => '大新闻',
'pid' => 0,
'created_at' => '2018-06-26 14:41:28',
'updated_at' => '2018-06-26 14:41:28',
),
array (
'id' => 7,
'category_name' => '优惠',
'pid' => 6,
'created_at' => '2018-06-26 14:41:45',
'updated_at' => '2018-06-26 14:41:45',
),
);
echo "<pre>";
//var_export($data);
function getTree($list,$pid=0,$level=0) {
static $tree = array();
foreach($list as $row) {
if($row['parentID']==$pid) {
$row['level'] = $level;
$tree[] = $row;
getTree($list, $row['id'], $level + 1);
}
}
return $tree;
}
function makeTree($arr){
$refer = array();
$tree = array();
foreach($arr as $k => $v){
$refer[$v['id']] = & $arr[$k]; //创建主键的数组引用
}
foreach($arr as $k => $v){
$pid = $v['pid']; //获取当前分类的父级id
if($pid == 0){
$tree[] = & $arr[$k]; //顶级栏目
}else{
if(isset($refer[$pid])){
$refer[$pid]['subcat'][] = & $arr[$k]; //如果存在父级栏目,则添加进父级栏目的子栏目数组中
}
}
}
return $tree;
}
$a = makeTree($data);
print_r($a);
$b = getTree($data);
print_r($b);
输出:
Array
(
[0] => Array
(
[id] => 3
[category_name] => 新闻
[pid] => 0
[created_at] => 2018-06-21 17:33:45
[updated_at] => 2018-06-21 17:33:45
[subcat] => Array
(
[0] => Array
(
[id] => 4
[category_name] => 要闻
[pid] => 3
[created_at] => 2018-06-21 17:33:55
[updated_at] => 2018-06-21 17:33:55
)
[1] => Array
(
[id] => 5
[category_name] => 企业服务
[pid] => 3
[created_at] => 2018-06-21 17:34:12
[updated_at] => 2018-06-21 17:34:12
)
)
)
[1] => Array
(
[id] => 6
[category_name] => 大新闻
[pid] => 0
[created_at] => 2018-06-26 14:41:28
[updated_at] => 2018-06-26 14:41:28
[subcat] => Array
(
[0] => Array
(
[id] => 7
[category_name] => 优惠
[pid] => 6
[created_at] => 2018-06-26 14:41:45
[updated_at] => 2018-06-26 14:41:45
)
)
)
)
Array
(
[0] => Array
(
[id] => 4
[category_name] => 要闻
[pid] => 3
[created_at] => 2018-06-21 17:33:55
[updated_at] => 2018-06-21 17:33:55
[level] => 0
)
[1] => Array
(
[id] => 3
[category_name] => 新闻
[pid] => 0
[created_at] => 2018-06-21 17:33:45
[updated_at] => 2018-06-21 17:33:45
[level] => 0
)
[2] => Array
(
[id] => 5
[category_name] => 企业服务
[pid] => 3
[created_at] => 2018-06-21 17:34:12
[updated_at] => 2018-06-21 17:34:12
[level] => 0
)
[3] => Array
(
[id] => 6
[category_name] => 大新闻
[pid] => 0
[created_at] => 2018-06-26 14:41:28
[updated_at] => 2018-06-26 14:41:28
[level] => 0
)
[4] => Array
(
[id] => 7
[category_name] => 优惠
[pid] => 6
[created_at] => 2018-06-26 14:41:45
[updated_at] => 2018-06-26 14:41:45
[level] => 0
)
)




