'1',
'name'=>'php技术',
'pid'=>'0',
'path'=>'0',
),
array(
'id'=>'2',
'name'=>'linux技术',
'pid'=>'0',
'path'=>'0',
),
array(
'id'=>'3',
'name'=>'Thinkphp',
'pid'=>'1',
'path'=>'0-1',
),
array(
'id'=>'4',
'name'=>'系统安装',
'pid'=>'2',
'path'=>'0-2',
),
array(
'id'=>'5',
'name'=>'文件上传',
'pid'=>'3',
'path'=>'0-1-3',
),
array(
'id'=>'6',
'name'=>'硬盘分区',
'pid'=>'4',
'path'=>'0-2-4',
),
array(
'id'=>'7',
'name'=>'软件安装',
'pid'=>'4',
'path'=>'0-2-4',
),
array(
'id'=>'8',
'name'=>'JAVA技术',
'pid'=>'0',
'path'=>'0',
),
array(
'id'=>'9',
'name'=>'分区格式化',
'pid'=>'4',
'path'=>'0-2-4-6',
),
array(
'id'=>'10',
'name'=>'JAVA基础',
'pid'=>'8',
'path'=>'0-8',
),
);
// 递归子级
function findchild(&$arr,$id){
$childs=array();
foreach ($arr as $key => $value) {
if($value['pid']==$id){
$childs[]=$value;
}
}
return $childs;
}
// 查找当前级别的子级
function build_tree($root_id){
global $rows;
$childs=findchild($rows,$root_id);
if(empty($childs)){
return null;
}
foreach ($childs as $key => $value) {
$rescurTree=build_tree($value['id']);
if(null != $rescurTree){
$childs[$key]['childs']=$rescurTree;
}
}
return $childs;
}
$trees=build_tree(0);
echo "";
print_r($trees);
echo "
";
function show($trees){
$pre='';
$str='';
foreach ($trees as $tree) {
if($tree['pid']>0){
$pre='| '.str_repeat(' - ', substr_count($tree['path'],'-'));
}
$str.=$pre.$tree['name'].'
';
if(isset($tree['childs'])){
$str.=show($tree['childs']);
}
}
return $str;
}
echo show($trees);
?>
// $trees数组结构为
Array
(
[0] => Array
(
[id] => 1
[name] => php技术
[pid] => 0
[path] => 0
[childs] => Array
(
[0] => Array
(
[id] => 3
[name] => Thinkphp
[pid] => 1
[path] => 0-1
[childs] => Array
(
[0] => Array
(
[id] => 5
[name] => 文件上传
[pid] => 3
[path] => 0-1-3
)
)
)
)
)
[1] => Array
(
[id] => 2
[name] => linux技术
[pid] => 0
[path] => 0
[childs] => Array
(
[0] => Array
(
[id] => 4
[name] => 系统安装
[pid] => 2
[path] => 0-2
[childs] => Array
(
[0] => Array
(
[id] => 6
[name] => 硬盘分区
[pid] => 4
[path] => 0-2-4
)
[1] => Array
(
[id] => 7
[name] => 软件安装
[pid] => 4
[path] => 0-2-4
)
[2] => Array
(
[id] => 9
[name] => 分区格式化
[pid] => 4
[path] => 0-2-4-6
)
)
)
)
)
[2] => Array
(
[id] => 8
[name] => JAVA技术
[pid] => 0
[path] => 0
[childs] => Array
(
[0] => Array
(
[id] => 10
[name] => JAVA基础
[pid] => 8
[path] => 0-8
)
)
)
)
// $trees输出结果为
php技术
| - Thinkphp
| - - 文件上传
linux技术
| - 系统安装
| - - 硬盘分区
| - - 软件安装
| - - - 分区格式化
JAVA技术
| - JAVA基础