本文实例为大家分享了PHP递归实现层级树状展开的主要代码,供大家参考,具体内容如下
效果图:
实现代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
<?php
$db = mysql_connect( 'localhost' , 'root' , 'root' ) or die ( 'Can\'t connect to database' );
mysql_select_db( 'test' ) or die ( 'Can\'t find database : test' );
$result = mysql_query( 'select id, fid, name from tree' );
while ( $arr = mysql_fetch_array( $result )){
$data [] = array (
'id' => $arr [ 'id' ],
'fid' => $arr [ 'fid' ],
'name' => $arr [ 'name' ],
);
}
// 将数据按照缩进简单排列 见图1
function data2arr( $tree , $rootId = 0, $level = 0) {
foreach ( $tree as $leaf ) {
if ( $leaf [ 'fid' ] == $rootId ) {
echo str_repeat ( ' ' , $level ) . $leaf [ 'id' ] . ' ' . $leaf [ 'name' ] . '<br/>' ;
foreach ( $tree as $l ) {
if ( $l [ 'fid' ] == $leaf [ 'id' ]) {
data2arr( $tree , $leaf [ 'id' ], $level + 1);
break ;
}
}
}
}
}
data2arr( $data );
echo '<br/>-----------------------------------------------------------------------<br/>' ;
// 将数据按照所属关系封装 见图2
function arr2tree( $tree , $rootId = 0) {
$return = array ();
foreach ( $tree as $leaf ) {
if ( $leaf [ 'fid' ] == $rootId ) {
foreach ( $tree as $subleaf ) {
if ( $subleaf [ 'fid' ] == $leaf [ 'id' ]) {
$leaf [ 'children' ] = arr2tree( $tree , $leaf [ 'id' ]);
break ;
}
}
$return [] = $leaf ;
}
}
return $return ;
}
$tree = arr2tree( $data );
print_r( $tree );
echo '<br/>-----------------------------------------------------------------------<br/>' ;
// 将数据使用HTML再次展现 见图3
function tree2html( $tree ) {
echo '<ul>' ;
foreach ( $tree as $leaf ) {
echo '<li>' . $leaf [ 'name' ];
if (! emptyempty( $leaf [ 'children' ])) tree2html( $leaf [ 'children' ]);
echo '</li>' ;
}
echo '</ul>' ;
}
tree2html( $tree );
|
以上就是本文的全部内容,希望对大家学习php程序设计有所帮助。