本文实例为大家分享了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程序设计有所帮助。