管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
无限级树状图可以说是无限级栏目的一个显著特征,我们接下来就来看看两种不同的写法。
( J7 M! G, n& a; |: e0 K) g6 B一.数据库设计
$ V1 J: y8 e- l+ i3 q+ U# g/ n- CREATE TABLE `bg_cate` (
, R$ g5 o; s5 t - `cate_Id` int(30) unsigned NOT NULL AUTO_INCREMENT,
- g* y* C7 h3 Z6 ^+ u4 M - `cate_ParentId` int(30) unsigned DEFAULT '0',
) S! n2 N: L' B% ?+ q/ N4 ?+ E - `cate_Name` varchar(100) NOT NULL,
% g# |7 ~8 A- |2 n+ N& ?7 o - `cate_Intro` varchar(500) DEFAULT NULL,* g0 B( W# o i5 a- |8 h; x
- `cate_Order` int(30) unsigned DEFAULT '0',& A' o( ~* T1 Z% I- H
- `cate_Icon` varchar(100) DEFAULT NULL,
! B* b+ q9 y. u/ Y - PRIMARY KEY (`cate_Id`)1 v. E3 N; H& M$ Z' j; w3 x- F
- ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=34 ;
6 c4 y% |4 v, V - --5 P- Y( I. S7 E7 _ y. T s: q
- -- 导出表中的数据 `bg_cate`+ L0 @7 R' i: V$ D
- --
3 i6 X- J w* g$ ?2 t3 w - INSERT INTO `bg_cate` (`cate_Id`, `cate_ParentId`, `cate_Name`, `cate_Intro`, `cate_Order`, `cate_Icon`) VALUES
: A2 i7 Y0 J, }% ? - (4, 0, '往事如风', '记录往事', 0, 'icons/6.gif'),9 I4 g3 {$ H8 i2 ]' _1 z4 M& s
- (5, 0, '水煮三国', '品位三国智慧', 0, 'icons/3.gif'),% w' E* N$ ~; N( U
- (2, 0, '技术学习', '平时学习的一些笔记,欢迎批评指正。', 0, 'icons/18.gif'),4 }0 {4 D4 z7 E2 C; l+ |* _
- (3, 0, '生活点滴', '记录生活点滴', 0, 'icons/2.gif'),
0 U' V) F# I1 t1 H - (6, 0, '栀子花开', '青春无限', 0, 'icons/8.gif'),0 }4 \. [4 Z8 [! ]5 i
- (7, 0, '假日休闲', '悠闲、自在', 0, 'icons/24.gif'),
9 C. z+ p/ x0 O z$ ` - (8, 2, 'html', 'html学习', 0, 'icons/1.gif'),
* n3 J: k2 V, X8 v. c - (9, 2, 'css', 'css学习', 0, 'icons/1.gif'),
! K+ a( i. z% F) Z0 X5 J5 h - (10, 2, 'php', 'php学习', 0, 'icons/18.gif'),
" p% T0 C1 E. e: e- f1 M4 ]0 `' T - (11, 10, 'php基础知识', 'php基础知识', 0, 'icons/1.gif'),1 I9 Z& Q( A' E8 @& @2 D
- (12, 10, 'oop', 'oop', 0, 'icons/1.gif'),6 \0 A4 }! K. [; v& `
- (13, 10, 'php安全', '讲述php安全', 0, 'icons/1.gif'),$ P6 d4 |3 L% R l+ h* M
- (14, 10, 'seagull framework', 'seagull framework', 0, 'icons/1.gif'),
- [& s) ~, L t9 ]% O - (15, 2, 'javascript', 'javascript学习', 0, 'icons/1.gif'),$ U1 Q9 Y2 {1 i6 w! k
- (16, 2, '设计模式', NULL, 0, 'icons/1.gif'), X O; ^2 N1 G- i8 d% {
- (17, 2, '软件工程', '软件工程学习', 0, 'icons/1.gif'),% T. ~. Q+ o! U1 S' ?3 Y9 Z, ^
- (18, 3, '厦门生活', '厦门生活', 0, 'icons/8.gif'),' B0 L) U# p1 H! Z/ k. ~( C
- (19, 3, '大学生活', '大学生活', 0, 'icons/8.gif'),
2 y5 L* e, a* {% ^4 |6 Y0 y* b* z) q - (20, 3, '童年生活', '童年生活', 0, 'icons/15.gif'),
& _3 {( Y9 Q4 P' ?0 N - (21, 19, '学习', '学习', 0, 'icons/1.gif'),9 ~9 I# `$ P, M+ V. X0 ^
- (22, 19, '运动', '运动', 0, 'icons/16.gif'),
- e( u0 }2 O" O3 L: E3 a - (23, 19, '旅游', '旅游', 0, 'icons/24.gif'),% w) g& v* w4 r
- (24, 22, '排球', '排球', 0, 'icons/9.gif'),
+ i7 \, q, Y4 q0 \ - (25, 22, '篮球', '篮球', 0, 'icons/9.gif'),
* V; ]7 u( i$ z$ ^! y - (26, 22, '羽毛球', '羽毛球', 0, 'icons/9.gif'),
2 p; n8 K6 v7 N; L - (27, 22, '乒乓球', '乒乓球', 0, 'icons/9.gif');
复制代码 二.到数据库取数据,放到数组。
1 K# G% l; `) p% r' e# g- require_once './classes/MyDB.php';2 w- I9 C7 }0 K6 _2 a8 H( i
- $con = MyDB::singleton();
# x) C# u- j2 T* B2 J - $sql = <<<SQL
% q: S$ I. @. y% f( Q( h - select * from bg_cate cate
+ N7 T/ V0 K+ d, f- `! f3 H o - SQL;
) m* A5 Z! E+ H4 ?& ] - $data = $con->getAll($sql);9 H% g2 s* W2 R: `
- //print_r($data);
复制代码 数据库操作我用的是pear类库。 [! x* f& N- ?1 D
最后的$data的数据格式如下:) R- w% g# ]+ l2 }' `6 N, D( K
- Array
' [( j3 m2 }4 E6 ?: q - (
; W; j# s7 \9 e5 {7 y, i - [0] => Array
9 w" X* b% Q2 M4 \2 k$ ^ - (
4 Z+ R( E2 g) ~ B1 c8 F, _0 L. }, ` - [cate_Id] => 4
1 M- p* m# O! d - [cate_ParentId] => 0
1 Y. r3 M. T/ A - [cate_Name] => 往事如风2 d* W& L9 P% K
- [cate_Intro] => 记录往事2 C" P# a+ r) ]6 z( c
- [cate_Order] => 0
% D7 \ a6 Z# `) b1 U: P - [cate_Icon] => icons/6.gif
0 o* I2 N) Z' f0 a - )
+ T8 r) ?4 V: r+ V; K! Z' ] - [1] => Array
% h2 k, L" t+ b2 q - (9 ^' c- s- n, t: w. B. V6 J
- [cate_Id] => 5# g( O) _( h8 `& ]/ p" N5 q
- [cate_ParentId] => 0$ C- p& b! P' }8 L
- [cate_Name] => 水煮三国: i4 J+ D- h5 x9 y$ _ L( I7 b9 X
- [cate_Intro] => 品位三国智慧
7 ^- R- L; m/ L - [cate_Order] => 0
; P1 }- {& E4 t8 w - [cate_Icon] => icons/3.gif
3 v$ V: H) v l: y - )
复制代码 三.把上一步的数据转为树型状的数组! a* D! D% ~6 W) e, v" v% ?
代码如下:, F5 P% z+ ]6 i* m; \% c5 b
- function getTree($data, $pId)9 W& ?' Y4 o- _5 F
- {1 c3 p+ ]$ t2 w/ D8 [1 u v
- $tree = '';
" z: R7 E& @3 s: \( Y3 S - foreach($data as $k => $v)( s1 c) s! K" J1 a
- {; H v9 P4 g' X
- if($v['cate_ParentId'] == $pId)
0 I" ^' B: n5 m* W9 {5 y - { //父亲找到儿子
' `4 V l7 ?1 `, j4 P1 K5 k c - $v['cate_ParentId'] = getTree($data, $v['cate_Id']);6 o4 `% k: P3 W1 t5 K/ A7 t# O; H; l
- $tree[] = $v;
' q+ i: |5 i/ }/ X1 T4 [' | - //unset($data[$k]);7 f6 N* L! Q+ d( N0 u
- }
% X; y9 L( L: u - }$ b1 ]" D8 a, S L& w, t' A
- return $tree;. ^% V1 o4 M9 f7 l
- }
: F m( h' f' Q" P - $tree = getTree($data, 0);
复制代码 最后输出$tree的数据格式为:+ j* g5 S7 g6 X2 n$ s. w
- Array
# l; }/ k9 s8 {+ c1 a0 ]$ z3 V* n - (
: c) X9 k2 S8 E# z* c" a - [0] => Array
) z5 d. @* N& K. q8 p/ B( } - (
& _4 Y3 C2 a+ ^& ] - [cate_Id] => 4
4 U3 [: x# ^# g6 Z5 i9 U2 C - [cate_ParentId] =>6 j. M$ z1 p7 N8 Z$ u( X5 Y9 l0 Q/ G
- [cate_Name] => 往事如风+ |+ ?& D: ], l2 h4 n. o1 s
- [cate_Intro] => 记录往事
' m) J! @, S( ` - [cate_Order] => 0# X" U; w! H2 T2 H3 K
- [cate_Icon] => icons/6.gif& i; {8 O: G& W5 P" N
- ), u( ^9 C- ` c! I/ o
- [1] => Array
2 v' E) c; B% Q! H: d: u - (
O. R) O& K0 D9 R8 p - [cate_Id] => 5
$ Z A2 k7 N S4 p9 P4 Z - [cate_ParentId] =>0 c# B: H0 h2 t) G! j$ a3 p! Q( }
- [cate_Name] => 水煮三国
- J3 R7 g4 a$ J - [cate_Intro] => 品位三国智慧) o3 i0 A) T7 D+ C9 @
- [cate_Order] => 0
; x6 q3 \1 P: v1 V% h V8 Z: {3 | - [cate_Icon] => icons/3.gif6 c0 Q" ]# F) Z3 R3 m
- )
* y. r. v5 R0 K% X - [2] => Array4 r& b# A+ P v% ]+ O" Y
- (
0 \! T9 g& g3 A. u' R8 K) G - [cate_Id] => 2
* R( f" e+ n( y5 D% ?! ?% } - [cate_ParentId] => Array: U: {: }4 ?5 O* K
- (
9 m. g! U5 x& U5 O - [0] => Array
8 m; b& C7 s7 | k - (
+ ?* P9 @. ?( C$ }# A - [cate_Id] => 8$ j# b2 U$ d4 F! |
- [cate_ParentId] =>
' g+ f$ R8 r/ w1 ^$ k' d- x, _ - [cate_Name] => html
: n+ y" M; d% D( B$ `) A" n - [cate_Intro] => html学习
0 D! y, |. S' ]# I - [cate_Order] => 0
8 m7 @# q- `: n9 R. V3 O1 s6 W) e: T. A. M - [cate_Icon] => icons/1.gif+ N; R4 g5 i7 w, Q
- )
复制代码 四.把树型状数组转为html
$ `# P @5 n, Q- s* t代码如下:
! S. q' H+ D1 P9 I- p' A( A- function procHtml($tree)+ a3 P2 l- g5 j3 U6 y
- {9 _/ R1 _% P! s% L' q C6 q" Y
- $html = '';6 }. X) ~6 @, W- N
- foreach($tree as $t)2 M+ a! l. k+ @; B
- {
, _! X1 ]* T% B6 ~7 I - if($t['cate_ParentId'] == '')( g; P0 D& {- X6 K& u/ e
- {& J/ H) u0 b8 u# |$ L
- $html .= "<li>{$t['cate_Name']}</li>";, ]) O% X- p5 ]8 J% o% w6 B7 J9 R
- }
( e: l+ w; U) F3 ? - else* h6 j+ I1 p2 V
- {" t* G! m8 m; V3 K) [' k
- $html .= "<li>".$t['cate_Name'];0 `* R3 J: {' Z
- $html .= procHtml($t['cate_ParentId']);
8 M. M4 W+ {( @% F - $html = $html."</li>";! I8 M8 E' _3 t8 z: z8 `1 W! x
- }, F: ~+ b$ S5 A$ D6 U0 k4 u: R2 ]. @
- }5 J, @) S1 p" B6 Z! p
- return $html ? '<ul>'.$html.'</ul>' : $html ;
% d) s5 U# S! g+ g1 U6 ]( l - }
, G3 i( b- `$ R* O t8 e1 C - echo procHtml($tree);
复制代码 输出的html的代码格式为:% H6 `1 u' v' r7 r; G) o2 S S9 i- i
- <ul>! \$ v% |$ G/ ]
- <li>往事如风</li>
( S+ T" D3 ]% P1 L% U - <li>水煮三国</li>2 l. ~4 w8 O: \
- <li>技术学习* i( I0 S, X. ]4 ?" E, B- `: o$ U
- <ul>
9 F, M" I! c; \ - <li>html</li>! N+ k; j+ n: p( s5 Y% D
- <li>css</li>
! l5 Y1 u. _6 W# S" \3 b! w. F+ _1 S - <li>php
3 {- [9 g" N; L7 c) t - <ul>
( N5 L: o7 v, r7 Q- T, l! p - <li>php基础知识</li>
6 n- w4 s9 A! j, w5 w - <li>oop</li>
, r; W8 |' h( z3 u - <li>php安全</li>
复制代码 五.代码整合
7 X0 ^5 I2 a8 E& n* v0 m- function getTree($data, $pId); o% ~6 j1 T- T* b8 z" g4 ^) a: Q
- {7 H$ K% P# ^8 a1 o
- $html = '';" J1 V3 v1 M7 q- ]2 M: m
- foreach($data as $k => $v)
' X. }- s: d4 v( a5 e( Z5 N - {/ A; T$ W4 u' q
- if($v['cate_ParentId'] == $pId)% p+ m% j# E# g) [3 c
- { //父亲找到儿子
* P7 g5 _; h6 L4 `3 K - $html .= "<li>".$v['cate_Name'];
* E! }7 c7 t2 }! P: u$ I - $html .= getTree($data, $v['cate_Id']);
' R. P' X& E' J+ j3 K3 W. { - $html = $html."</li>";7 i9 X% }) E1 Y' I
- }
8 Y& t' U) U: J$ z - }3 j$ v" `* m. m- W
- return $html ? '<ul>'.$html.'</ul>' : $html ;0 m q9 P0 k' a' l* R
- }* e6 m; h8 ]# Z* W4 N: y3 t
- echo getTree($data, 0);
复制代码 六.增加CSS样式
& y# _# k( }+ {. n; o; x
" k0 O" Z/ G t( z- d
D$ e4 B; v* i" L, f# ^9 T% _第二种是从开源网站上看到的,非常非常的简介。
2 A" Z2 U" j& [' C5 [5 j: p# K; ]+ g1 ^- <?php' i4 t8 z; s5 I3 S
-
; {: V7 \/ g! D- s) x9 a - function genTree5($items) { 8 S$ S9 U5 F! |8 m$ ~
- foreach ($items as $item)
" r4 C6 U6 m- ?- t - $items[$item['pid']]['son'][$item['id']] = &$items[$item['id']];
% m* r! R3 U7 w - return isset($items[0]['son']) ? $items[0]['son'] : array();
5 N* k$ G V/ @: D( o) V3 s8 b2 V( p - }
- L' K0 Y b' @; V -
: ?+ n; Q+ p) A. u/ P - /*** @" Y! M" K" V( v& r& C
- * 将数据格式化成树形结构
/ d! a: b6 Y. A; {( @$ }1 t+ W( s - * @author Xuefen.Tong: N5 G. k1 @# E' J
- * @param array $items7 l* Z' z. u; e
- * @return array
3 l$ d8 | Y5 p; }5 I5 n - */
+ N& s1 |& T* S& Y; K- X+ c - function genTree9($items) {
1 ^8 v) a/ C* h2 K - $tree = array(); //格式化好的树
0 C* Z& x+ ^1 b" m - foreach ($items as $item)
) P o" J, ~! h. x( Y - if (isset($items[$item['pid']]))0 b1 V i0 i- `9 H, t1 @
- $items[$item['pid']]['son'][] = &$items[$item['id']];) _1 n9 Y. I+ \8 x
- else
) f, V3 Y/ p$ U) V - $tree[] = &$items[$item['id']];8 ^, @0 q( M/ ?; K
- return $tree;
$ }! i/ J; g, i! v - } T& c9 \! l& F1 _8 i
-
/ C' H! a% }8 F* K' u - $items = array(
% P' k$ l1 P6 V1 f4 [ - 1 => array('id' => 1, 'pid' => 0, 'name' => '江西省'),, C. M0 w0 V9 R( i+ l
- 2 => array('id' => 2, 'pid' => 0, 'name' => '黑龙江省'),* D( e2 v5 |2 y
- 3 => array('id' => 3, 'pid' => 1, 'name' => '南昌市'),
' n% G& |- R. }: F% y0 H - 4 => array('id' => 4, 'pid' => 2, 'name' => '哈尔滨市'),9 x! E- |1 y0 w$ E4 Y! l
- 5 => array('id' => 5, 'pid' => 2, 'name' => '鸡西市'),5 ?& U5 I' c p' ]$ Y( B
- 6 => array('id' => 6, 'pid' => 4, 'name' => '香坊区'),
! _5 G8 N* j0 `+ T% Y1 b - 7 => array('id' => 7, 'pid' => 4, 'name' => '南岗区'), A9 j# q8 v& \0 \; K
- 8 => array('id' => 8, 'pid' => 6, 'name' => '和兴路'),: A8 [3 n9 a7 Y
- 9 => array('id' => 9, 'pid' => 7, 'name' => '西大直街'),
# q& A+ n4 o! F! J" \2 e1 U - 10 => array('id' => 10, 'pid' => 8, 'name' => '东北林业大学'),% z& v6 t3 k) y
- 11 => array('id' => 11, 'pid' => 9, 'name' => '哈尔滨工业大学'),
5 H' J" G% g: N9 x2 } - 12 => array('id' => 12, 'pid' => 8, 'name' => '哈尔滨师范大学'),5 g3 q! P, |) W% i7 M
- 13 => array('id' => 13, 'pid' => 1, 'name' => '赣州市'),
* F- t: d L7 F3 } - 14 => array('id' => 14, 'pid' => 13, 'name' => '赣县'),
* T: |, C/ l% f" x - 15 => array('id' => 15, 'pid' => 13, 'name' => '于都县'),4 s( J1 l P: y! [3 p
- 16 => array('id' => 16, 'pid' => 14, 'name' => '茅店镇'),, [: J" G1 } \5 [& V) ~
- 17 => array('id' => 17, 'pid' => 14, 'name' => '大田乡'),
3 k1 }3 \5 P1 g2 q- x/ d5 e - 18 => array('id' => 18, 'pid' => 16, 'name' => '义源村'),& ?7 a2 @5 } Z# ?
- 19 => array('id' => 19, 'pid' => 16, 'name' => '上坝村'),
/ n0 R$ x5 e [ - );+ K d7 f+ D+ B% z, s( Z
- echo "<pre>";* U @! ]# Z) x+ g% v7 d
- print_r(genTree5($items));4 w8 [ O: w$ J5 y
- print_r(genTree9($items));
1 R. `( L" U3 b' U) v6 g. \9 q. t -
. D0 k$ E0 n& R - //后者输出格式,前者类似,只是数组键值不一样,不过不影响数据结构
- X/ x, I; A/ [. @) @: }2 A - /*
9 J/ X. ^" B2 F$ }, l - Array
! `9 y/ g0 d( r8 A - (
9 M! z' M/ a# P) B - [0] => Array
. N& u! ]; @. y" } - (& l; s" I- @) ^3 @% e" e
- [id] => 12 H% P/ C* X7 E5 d2 n$ T
- [pid] => 0: f/ Z( n x. _" b# G
- [name] => 江西省* _* f! {& q5 |5 Y. \
- [son] => Array
$ J) }8 @+ U4 a0 u' H, P - (
6 ]4 M4 v) ?1 q- d - [0] => Array9 n2 @+ R* n5 f+ f f
- (
5 S6 {/ k, G% i+ i6 P - [id] => 3
# x7 o4 h# \6 Z. h" s - [pid] => 1
# p& X! t- i* D% K; W - [name] => 南昌市$ x% n( y6 J/ O9 a
- )0 B) D7 a2 T4 h' ?
- 7 L- m0 @; `+ q+ C' c
- [1] => Array8 e+ {' }3 o- D9 ]8 M
- (' {4 s! H: E! q5 U3 i0 U! v
- [id] => 13! n* q3 Z! `. R( C5 m3 m
- [pid] => 1* T: |, r1 C; J) v; Z1 v
- [name] => 赣州市
" C' W& f3 B- q - [son] => Array
* r* F. _) I3 D y - (5 G$ u* {% ~8 N, ]0 |
- [0] => Array# r( \" v$ s; @/ V) L. ]3 N& s
- (
3 ^+ U/ W" R* \. s9 `2 U. m' u - [id] => 14- ]& ?8 S, |# }4 _$ Q
- [pid] => 13
. o. F8 b+ B8 `* g* M) k; R - [name] => 赣县% v9 u: e T3 _. Z) X( i
- [son] => Array
) ~, r1 G1 n2 V0 ^ H - (/ q. v, R% ], i: B- W
- [0] => Array
' u; {6 N. w' D0 s - (
* h1 w2 o9 a& O8 K; {# Q) ]* t - [id] => 16
2 H5 e! M3 u& J' I1 l. F - [pid] => 14
+ n% l1 P4 U6 {+ A - [name] => 茅店镇
, H% _( u# p& E - [son] => Array
# m& A# u8 n7 G7 W# H# r$ O' g - (
& d- c+ M: I2 O" B. o - [0] => Array
, I, c6 A7 _/ p) a* p0 L - (
& X9 y- e$ s! e4 _* p - [id] => 18
, j7 f* z/ v, |3 \" h% t* a+ p - [pid] => 16( i3 R: t* s9 J/ D% z: m
- [name] => 义源村
* P4 C% h+ O. E X1 ~+ ] - )
, N5 H8 T* [. U/ I3 f/ ^* i# S -
/ h) P6 b" p( _ - [1] => Array& v) `) g3 x; t" A% Q" v
- (
/ R2 S. v. K% I2 V; \ - [id] => 19
1 B- n |0 R+ O/ j- h2 K9 T - [pid] => 16' g. a. A" c, s! F
- [name] => 上坝村
' Z( Z# B# O, c! a- d - )9 R$ h0 p I3 t3 Y
- 4 d( m* Q" Q# ?2 O0 h: F: W! L; |
- )7 g6 ^. m. X& m }/ l- U7 N
- / Q6 q" r# b+ t2 [6 x C: }* Z; h" u# e5 `
- )8 q3 N5 l, E" ]+ z5 G2 {
- 7 y! r M# ~2 d1 q( _" J
- [1] => Array5 e8 j% C: r g+ h5 ~% x6 p% ?: F% [
- (
- i" V: V5 D! l3 C - [id] => 17* `2 I. Z7 d3 G7 N4 L$ s0 U8 |1 p
- [pid] => 14: d7 S2 \/ [" a- T2 K% b* [
- [name] => 大田乡8 [! k% `/ C: r3 R5 @
- )
1 p. G1 C0 y" T -
! n0 E5 @* o' v7 I& |" u - )( M7 k: l" a6 @9 p: d- \
-
' C, h7 ^6 O& r) ~! v6 r - )
" Z2 z. L/ g; |- B6 O - & X$ Z" r6 W# N
- [1] => Array
B5 d1 [5 p, F7 `% B, t - (
2 @5 a& ]7 E2 w& M4 T( b5 { - [id] => 15
+ J' y% k6 `3 u! y - [pid] => 13
@. p& t0 g$ M& M0 x - [name] => 于都县
" W- B" l# c* f1 V& [ - )8 {' l: ?0 u" o8 ^7 _) Z3 h
- % g. o: O! I. C$ [
- )
5 F" H# W' i8 u5 E, ~7 p" u1 D -
) g" a# O4 p% B9 V& q; K - )
% e( p# Y5 S8 V ~+ @; m- C - * R, C" [4 [9 V% j
- )2 W: t: C2 Y! D
-
/ Z, l6 [" u' I' } - )
4 m/ w2 K& h" Y- g6 q/ `9 ? -
. e' c c3 Y. L5 Q - [1] => Array
: U; i6 [* t; K0 R3 a - (" S8 Z& B- f$ S/ S3 e# D( _1 y; G
- [id] => 2
2 } c1 m: P. S' h5 d; M9 e - [pid] => 0
3 p- l1 B: \% N7 X. t - [name] => 黑龙江省
2 W' ?% ^( b7 J+ G6 _ - [son] => Array
8 T1 u8 b5 R* s$ S) H9 z - (. Q% t5 h, G. L
- [0] => Array: v9 a9 Y4 g! ^" j/ `9 C0 v
- (! a) I+ d8 d- }. a- g" {: l+ Y
- [id] => 4
6 v+ ^5 o# w) z - [pid] => 2# i0 u% \8 D5 A& j* D/ S$ H- r1 d. f
- [name] => 哈尔滨市
) }+ k5 h$ t( [5 g - [son] => Array$ M5 e0 C& x5 V4 j2 G
- (
X: y0 _: ]2 d% _+ y# T/ a - [0] => Array
- O6 M) M" `) D% U6 o - (' Z! P3 H6 l2 U) o
- [id] => 6
8 X2 l: w+ C+ o' Z - [pid] => 4( ~% Q! o+ C' B E0 R* b
- [name] => 香坊区/ E1 f7 N! F' l0 ]
- [son] => Array/ L5 [ c, B& M9 q3 d
- (6 z2 R" g5 a" g F
- [0] => Array
9 N/ H% H5 R# T+ l; s - (7 Q; b. Y% o" \# _2 \7 ^. b5 c
- [id] => 8
) k- _9 y, ]9 O; T: x6 X- r% N - [pid] => 6, a, A+ d7 Z K H1 w4 v x( W
- [name] => 和兴路
" J7 N! X$ r5 Z - [son] => Array
. I. n. r7 o! b R - (3 ~1 s: P' Y; B( S( t" j; n
- [0] => Array- y8 R7 Y1 U+ h$ c
- (9 `7 i9 H7 b1 s8 T4 x
- [id] => 10
+ F7 v; m9 ?3 Q# P$ m2 @0 u - [pid] => 87 P# `7 `( M+ ~
- [name] =>
% s5 q5 N4 B6 M) ^( c - 东北林业大学
, {6 B; A+ P/ T" c9 g/ @! g" b - )2 I; U: `' {. _* t
- 1 p( r$ |9 Q: Q
- [1] => Array# z: w+ j- L I7 E8 ]$ h
- (
( g. T& t d+ m h2 H5 s9 m - [id] => 12
$ I$ y& n% A( }: z! q2 H; w - [pid] => 8
5 {; s7 ?, i" ~+ l: X - [name] =>
$ Z, F h! W# ^2 {9 i, f - 哈尔滨师范大学
! m( H7 w$ k$ r - )
2 V. G8 ]7 B! E, L) X/ H1 U - ' Z z; U' r9 y- Q3 n+ {
- )4 {- ^ B v% R9 j' X4 U
- 3 I8 N+ w( Q, N/ u& K, n) b
- )
3 D% h+ n# C3 ^; k0 x -
. h' z# s5 D' y - )
7 m6 F3 K7 ` D7 D - " l& e, p/ o. ^4 m9 P& C4 F7 g
- )
* V, J W; n+ a1 l* q: l$ u -
- F; o* t# ~$ Y$ u# A - [1] => Array+ P+ h* ]' _; L' w5 O/ T5 ^. U
- (+ b* D0 D# N# ^
- [id] => 7
# x; ? S/ @; J$ h- Q - [pid] => 4
9 J/ p4 S* U& Q7 v: U - [name] => 南岗区
: U" ]: O) w7 G6 T# E - [son] => Array
. P9 `9 q4 a: T* Q4 p( m - (! Z+ M# x r: A- R1 R$ d5 x: u9 F
- [0] => Array
5 {. H5 {: [- L1 @; `1 }2 A - (
( j I' Q1 \( ^+ r! W - [id] => 95 R* w+ K, c* Z5 d, G2 y3 ]
- [pid] => 7
2 @9 z) F4 ~$ K! N) k - [name] => 西大直街
8 g0 `% d& ^. o& Y - [son] => Array
, n t+ R! [( m - (
' S7 q' r+ o& z! T( Q - [0] => Array
, W& n% I _. Q9 J - (, N) e/ h" I% h& C; E( H
- [id] => 111 U8 Z* T! `9 D
- [pid] => 9# M! z3 ? A5 O6 p
- [name] =>
1 H9 J& b# S) p% [! O) X - 哈尔滨工业大学; f6 j' c/ z% W9 ^% x7 j
- )
- u! t- |9 @2 X1 C/ B; ~ - 0 k4 g( W: |9 s
- )+ s8 O% Z, S t# f
-
k7 ~5 t1 F) L+ _& M$ g; y9 \ - ); O' j5 ^/ w X* f1 l- H% Q
- " y+ Y6 y. a4 {8 t/ s8 |- m: R f) k- B
- )
9 B7 i+ m4 B3 s3 [5 C" f -
# ? Q8 L2 i% i - )
1 L& b+ t D, D: s, Q - ( c% Q/ r) Y) X# B* B' u8 [1 A
- ), s5 c4 y+ D( Z4 S" q; m
-
) k( S5 \5 l/ B/ b - )) N' N: ~, p" p' J
- 5 w0 M, P; N/ z8 Z5 F
- [1] => Array
/ n1 I8 p, x5 O; O1 a - (
6 `, f; g* O% f5 b j2 `( d. v - [id] => 5
& D& I& F3 K9 n - [pid] => 2
8 ]" u Y+ T4 s1 N! K - [name] => 鸡西市5 F6 \8 l+ L8 D+ c5 H7 A1 Z
- )9 w8 m* Y# q5 Y/ f) x
- * I* [4 b9 }5 ~3 Y" m8 i) [% V
- )4 ?& c; d7 `# _$ q
-
, W/ Q& L; b4 @9 D3 } - )
4 s4 T3 K: U% f3 X# P& t' N - )*/
复制代码 可以看出第二种代码只用了5行代码就实现了无限级的分类树,非常值得大家的借鉴和学习。
. K' g0 s3 R* V; F! I1 a4 ~6 V4 E: T. A4 L R! n+ J+ w' m+ l
6 n, w1 l+ t- L6 A7 R& {4 x/ Q
( W! L e% s$ u: E |
|