1、表结构
ID Name PID Path(路径)
1 PHP 0 0
2 Java 0 0
3 Thinkphp 1 0-1
4 TpView 3 0-1-3
5 Java基础 2 0-2
6 Java语法 5 0-2-5
2、数据测试
<?php
// 测试数据
$rows=array(
array(
'id'=>'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',
),
);
foreach ($rows as &$row) {
$num=substr_count($row['path'], '-');
if($num>0){
// 子级
$row['all']='| '.str_repeat(' - ', $num).$row['name'];
}else{
// 父级
$row['all']=$row['name'];
}
// 改变数组
$arr[]=str_replace('-', '', $row['path'].'-'.$row['id']);
}
// 数组排序
array_multisort($arr,SORT_STRING,$rows);
// 打印数组树
foreach ($rows as $row2) {
echo "<p>{$row2['all']}</p>";
} ?>
// $rows输出为
php技术
| - Thinkphp
| - - 文件上传
linux技术
| - 系统安装
| - - 硬盘分区
| - - - 分区格式化
| - - 软件安装
JAVA技术
| - JAVA基础