管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
无限级树状图可以说是无限级栏目的一个显著特征,我们接下来就来看看两种不同的写法。
4 H& C% d' @) w: M; X( g: }* k一.数据库设计
& v& ?' Z! i7 Y0 M7 C! {- O- CREATE TABLE `bg_cate` (
; ]1 k1 Z* F2 w4 F! a3 x - `cate_Id` int(30) unsigned NOT NULL AUTO_INCREMENT,! J W5 j2 O( ?' C) [" r# I; s
- `cate_ParentId` int(30) unsigned DEFAULT '0',6 Q. w( ^8 b- I" L& B
- `cate_Name` varchar(100) NOT NULL,
9 _6 m5 z/ M9 r8 t9 A - `cate_Intro` varchar(500) DEFAULT NULL,9 f) ~/ G: p3 `) H K
- `cate_Order` int(30) unsigned DEFAULT '0',
: n4 G9 H3 w& x& |4 G$ [* g% w - `cate_Icon` varchar(100) DEFAULT NULL,
, O; q6 E* Y& {( u# \) c - PRIMARY KEY (`cate_Id`)$ t! k) |6 Y) B L
- ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=34 ;. k: O9 F6 H+ ]. n1 j
- --: j& J9 I: Z i( K/ u8 ~- |2 S; V9 U
- -- 导出表中的数据 `bg_cate`! K% O8 C7 u% v/ [) ]2 H& R& F1 S
- --
9 a- d" j8 }8 o2 d - INSERT INTO `bg_cate` (`cate_Id`, `cate_ParentId`, `cate_Name`, `cate_Intro`, `cate_Order`, `cate_Icon`) VALUES
" R! ]3 O& }9 ]8 E - (4, 0, '往事如风', '记录往事', 0, 'icons/6.gif'),1 L' S ]: F3 ?+ x$ _
- (5, 0, '水煮三国', '品位三国智慧', 0, 'icons/3.gif'),
* |6 y* [' B) q2 i - (2, 0, '技术学习', '平时学习的一些笔记,欢迎批评指正。', 0, 'icons/18.gif'),* G: o9 |, J: b! F3 K
- (3, 0, '生活点滴', '记录生活点滴', 0, 'icons/2.gif'),
, w6 _9 \8 @( }) e3 X - (6, 0, '栀子花开', '青春无限', 0, 'icons/8.gif'),
9 I! m, H6 z: j, L6 Y - (7, 0, '假日休闲', '悠闲、自在', 0, 'icons/24.gif'),! @8 w% |- T/ \0 [1 V: m6 ^3 K
- (8, 2, 'html', 'html学习', 0, 'icons/1.gif'),
8 m1 M2 H3 M; n4 w- r - (9, 2, 'css', 'css学习', 0, 'icons/1.gif'),
1 k+ S. }$ a% `& ^- J: @ - (10, 2, 'php', 'php学习', 0, 'icons/18.gif'),
3 q, p0 |/ W/ h3 |9 [, }. c - (11, 10, 'php基础知识', 'php基础知识', 0, 'icons/1.gif'),
0 G+ [3 X! X x! x4 X, O - (12, 10, 'oop', 'oop', 0, 'icons/1.gif'),
9 d1 q, M. r1 u8 x - (13, 10, 'php安全', '讲述php安全', 0, 'icons/1.gif'),* g$ t$ r& d/ d6 B
- (14, 10, 'seagull framework', 'seagull framework', 0, 'icons/1.gif'), i) d1 C4 \1 K
- (15, 2, 'javascript', 'javascript学习', 0, 'icons/1.gif'),/ f7 q, h. }1 t
- (16, 2, '设计模式', NULL, 0, 'icons/1.gif'),
* K @& @0 T5 l( N/ g! @ - (17, 2, '软件工程', '软件工程学习', 0, 'icons/1.gif'),
5 ~2 E/ M/ q; w: R7 x( V - (18, 3, '厦门生活', '厦门生活', 0, 'icons/8.gif'),
% x2 }' s4 ]1 L% ~ o - (19, 3, '大学生活', '大学生活', 0, 'icons/8.gif'),- J+ K7 ~4 u( C/ y* B1 X
- (20, 3, '童年生活', '童年生活', 0, 'icons/15.gif'),1 o7 V1 E& r! x5 T; J
- (21, 19, '学习', '学习', 0, 'icons/1.gif'),
) H \) V F7 Y - (22, 19, '运动', '运动', 0, 'icons/16.gif'),- x) d+ `. l1 Y; ?1 B1 B0 G5 O
- (23, 19, '旅游', '旅游', 0, 'icons/24.gif'),9 V4 S7 U1 J a* T$ M7 v' R0 I
- (24, 22, '排球', '排球', 0, 'icons/9.gif'),
9 @% m p, T6 w& M }8 i' ] - (25, 22, '篮球', '篮球', 0, 'icons/9.gif'),5 A3 V ` z9 ~/ J) s
- (26, 22, '羽毛球', '羽毛球', 0, 'icons/9.gif'),2 U F5 q3 e: C/ _
- (27, 22, '乒乓球', '乒乓球', 0, 'icons/9.gif');
复制代码 二.到数据库取数据,放到数组。
% Y1 n* ]3 s6 U- P$ J- require_once './classes/MyDB.php';
/ N& S9 V2 V; N3 l( F. q! b - $con = MyDB::singleton();: y3 ?6 ^; @6 [+ a' P. d
- $sql = <<<SQL
8 H! u7 C; i* v3 N4 F - select * from bg_cate cate& T6 x6 C# K* _3 S R
- SQL;6 P. ?4 l0 k) p& h: R6 B+ x
- $data = $con->getAll($sql);
" r% C& U6 l- C7 D+ {+ I - //print_r($data);
复制代码 数据库操作我用的是pear类库。# T0 [2 Q g b! g! }' c
最后的$data的数据格式如下:* Y5 N% U0 a2 X* L+ b
- Array/ N. {/ D; |5 P; P' K; s1 j; M
- (' p5 n& `2 W+ {( J# }# X, F
- [0] => Array) P% G) N% F, x7 O! I
- (
, P) T# m1 L/ _3 Q - [cate_Id] => 4
T+ \4 a. i, ]. p4 Q' X - [cate_ParentId] => 0
3 ?7 G f* l" N8 s - [cate_Name] => 往事如风
2 x$ o' }) _6 V6 ]) h0 |2 x$ R - [cate_Intro] => 记录往事# q- @% E0 J# u2 F. W, }$ P! T y! ?
- [cate_Order] => 0
+ S9 S4 A+ I! x k: i& u - [cate_Icon] => icons/6.gif, J2 j5 K( I0 j" R
- )
/ o& P, J8 |/ q. N1 ? - [1] => Array) G! X& _( y6 w/ t
- (" @- g" @* l. V; @/ O+ V+ Q
- [cate_Id] => 51 X7 }, L- d9 ^. m
- [cate_ParentId] => 0
# e; _/ u- X/ d - [cate_Name] => 水煮三国6 s8 Z8 J0 P& m0 b
- [cate_Intro] => 品位三国智慧
' h) U0 a* p d! _; o9 t+ e- Q5 \: m$ K - [cate_Order] => 0
+ w2 [) W0 x! i& h( f6 s+ g/ C - [cate_Icon] => icons/3.gif
; m9 i" P* t3 X4 X9 F9 W - )
复制代码 三.把上一步的数据转为树型状的数组2 w" s% F+ T4 Y% N
代码如下:- f4 d! K" R/ S4 l7 y
- function getTree($data, $pId)7 O4 Y+ l0 p f0 ?; P0 Z
- {
, a8 W/ a* t) } [ - $tree = '';8 w: f7 E; q" T/ I
- foreach($data as $k => $v)2 ?+ _$ z; D/ y7 k/ @
- {
( ]8 a3 ^/ W+ P# v, H' g: G - if($v['cate_ParentId'] == $pId)' v; d, T9 x4 K) [9 W; v
- { //父亲找到儿子
% h4 `3 s$ o5 p4 z2 A+ u - $v['cate_ParentId'] = getTree($data, $v['cate_Id']);0 i) ?% n/ i* t. r
- $tree[] = $v;) e. ~3 Y" G0 f+ k6 G* m2 q3 h8 W
- //unset($data[$k]);. {& c L! M' p
- }
1 o1 j$ V1 b' `5 n - }
7 g/ _5 w$ d8 e9 x! W - return $tree;
% b+ _ A& |. h y5 `) y - }
( w; O- s9 N0 n8 \ - $tree = getTree($data, 0);
复制代码 最后输出$tree的数据格式为:; }6 _9 ]# E" j4 \
- Array. u/ I {+ H$ p# @& _
- (. I4 |! L; E( l; J0 ?$ S
- [0] => Array& G: U& b+ l5 T0 A N1 p+ I
- (# C0 U4 J$ Y' u
- [cate_Id] => 4/ J& z- C0 H6 ~8 O
- [cate_ParentId] =>
2 W; Y+ Z8 N! _2 @! Q - [cate_Name] => 往事如风
4 D* c m" n3 q/ w - [cate_Intro] => 记录往事
$ ^ y. _3 z* I( h - [cate_Order] => 0
' y% g# R4 h" a, t2 z% Q - [cate_Icon] => icons/6.gif8 {$ N8 M0 }9 G, u- g: V( x
- )& T" E8 ^/ y6 B2 C
- [1] => Array
9 U# ?) r6 E# l4 D; u, j I - (% o: D2 X- i( Q8 Z& z/ ]" ?1 f
- [cate_Id] => 53 @0 p. W( A" e: m$ \: _
- [cate_ParentId] =>
! F- v+ C" d: ]% n - [cate_Name] => 水煮三国
( z3 O1 |4 m3 n! ^4 G' y& e - [cate_Intro] => 品位三国智慧
6 V1 w5 ?0 O3 X7 _ - [cate_Order] => 0
6 ^) x" ]# R0 o3 Z" a) U, l - [cate_Icon] => icons/3.gif
; Q. Z* \/ k0 l; q P8 K. W+ j - )- k% M# E F+ i& C) l0 A9 [
- [2] => Array
, i. e5 w9 s3 {2 B4 j/ s - (" d7 L# P& B. u+ a& ?4 e) P
- [cate_Id] => 2
/ a' q; E) @2 V0 K2 [# {" H3 ` - [cate_ParentId] => Array
9 G# w! z5 W; P' q% q6 W8 L9 r - (
1 ^* r( h: M# _! K - [0] => Array
5 F/ c% d3 D4 l6 X, {3 L( K9 s - (9 V" [& K' w0 a3 A- D$ w
- [cate_Id] => 8! c) b5 A7 L0 z
- [cate_ParentId] =>8 g, g7 y& }+ m, k$ a5 I! C. X8 K' Y
- [cate_Name] => html1 ~* L. o. v- W8 l, Y$ b& G+ o
- [cate_Intro] => html学习
1 t( _) p$ P. c0 F% a# O6 s - [cate_Order] => 0
5 `% ~/ A* ~/ `, D( q - [cate_Icon] => icons/1.gif4 Q* y2 F/ D H) z/ L- A4 d% i) G
- )
复制代码 四.把树型状数组转为html, j4 h6 ?, l/ z/ U. c/ G
代码如下:
c& J$ H0 j! c( Z/ v. c- function procHtml($tree)
0 y+ L. a( o, X - {8 n1 N4 G B: b# x8 Y
- $html = '';
/ `% M+ Y5 E- W6 b' l3 Z - foreach($tree as $t)
7 G1 _9 W* |$ U6 ~ - {* W/ z+ P9 Y3 b7 [) _' z
- if($t['cate_ParentId'] == ''): z; [; ?7 [! a5 s. m
- {4 S4 ~) N( U4 k2 s- [
- $html .= "<li>{$t['cate_Name']}</li>";
. Z5 E4 k1 x* `) q - }3 M/ B$ w6 ~3 C& w) J
- else; n0 p v$ R4 J
- {
/ ~) k) b4 x! `% w* O7 s, C" e - $html .= "<li>".$t['cate_Name'];
, B. Z1 H( }; M2 e5 R, U! g - $html .= procHtml($t['cate_ParentId']); K/ L7 u! v* l% @
- $html = $html."</li>";0 b2 l- D) I- E5 y
- }
5 p( N1 V" V7 n6 s ] - }1 b# x _2 v) A: ]) `' _
- return $html ? '<ul>'.$html.'</ul>' : $html ;; }. a3 R0 w& l% U
- }. [! b3 n ~( j% ]
- echo procHtml($tree);
复制代码 输出的html的代码格式为:
5 l3 V' X1 L* M: D0 P" u( Y9 c$ n- <ul>+ J! r8 S$ ]: `& H! s
- <li>往事如风</li>
1 }4 E9 @' U) y1 C! ~ N - <li>水煮三国</li>
. }! |. r6 @# k7 s( y - <li>技术学习
3 I, J1 ]' S! E, G - <ul>8 ?' [; m @# }. E( E1 k4 [
- <li>html</li>( k9 _/ M% G2 A& {( `: C
- <li>css</li>
) s3 U# F$ G/ l K& _! i6 v7 E" F - <li>php
7 u& E+ Q% d+ w0 A) T - <ul>
. {9 t/ G: O& F$ I- s( C - <li>php基础知识</li>
0 L/ j; K, g3 M4 j7 C - <li>oop</li>
( b* Y( A, L3 O3 H* Z! i6 D - <li>php安全</li>
复制代码 五.代码整合) |4 P: I) E. [& I1 X0 c
- function getTree($data, $pId)
* o! b# `2 p: _& v# @' H0 f - {/ A1 O3 ^" f* H0 D3 K2 j e
- $html = '';3 f: i8 b* K5 r* y% k5 C
- foreach($data as $k => $v)1 o0 g7 o" u( _) W s) |& T3 }
- {8 h: L9 j+ z R5 _0 C' |
- if($v['cate_ParentId'] == $pId), i6 e9 r8 R$ S
- { //父亲找到儿子- a. L7 _( T( }6 V
- $html .= "<li>".$v['cate_Name'];
" d8 ?# A+ P' W* j7 M - $html .= getTree($data, $v['cate_Id']);* W4 L. e0 Y) g* m$ i
- $html = $html."</li>";. e: F; R& ~/ F& j7 l) k
- }
$ l2 F! l3 A$ } - }
], r9 t! q* I( i i; { - return $html ? '<ul>'.$html.'</ul>' : $html ;
& ]9 [" k* Y) D- i - }
7 Z( W/ \% J6 z7 z4 { - echo getTree($data, 0);
复制代码 六.增加CSS样式
4 [" r3 v2 _. q4 A- Y- ~& U
) B( J' n. @: Q v* v! s# q- b
/ e6 n& h( A J0 l第二种是从开源网站上看到的,非常非常的简介。
4 w. s/ S$ A" ~! G* B7 i9 }& w- <?php; d) R! k# d, H' X4 W# O
- % f8 F/ ~8 [' B: v, H6 n
- function genTree5($items) {
- l9 A6 |% u$ z) z/ { - foreach ($items as $item) # N! s! M. w) m) e) g5 i6 |
- $items[$item['pid']]['son'][$item['id']] = &$items[$item['id']]; / c8 P6 |/ ?) Z/ ], |7 W; E" V
- return isset($items[0]['son']) ? $items[0]['son'] : array(); 0 J6 y0 t# w- a7 R0 T1 y, f: Q4 ?0 \
- }
. _+ |; Z% X% K, F6 | -
2 n* R+ H* a# X5 { x - /**$ |- D, t) u* D- h8 v* l1 H
- * 将数据格式化成树形结构
& I5 N& Y' U1 }& o1 N% O8 S' z - * @author Xuefen.Tong+ t- R9 J3 c/ v; s% Q
- * @param array $items
) m; f: c% c* p3 U- m - * @return array . N3 u5 T. i M+ u' A& s, x
- */
0 E) r2 @+ k* C- \; B/ z8 z; H+ n - function genTree9($items) {
2 e2 y: z: N7 ^ V7 V - $tree = array(); //格式化好的树% i/ ?+ U+ V% e4 W8 D
- foreach ($items as $item)
; C( l& L5 O+ Q a' ?# \- r - if (isset($items[$item['pid']]))
- U d+ H% T* a! j! m d8 q6 V - $items[$item['pid']]['son'][] = &$items[$item['id']];% J( R E. {* d
- else
# A: b- {6 p& a4 K - $tree[] = &$items[$item['id']];
7 b2 Q! K: S9 M" _8 P# E - return $tree;
0 }; L9 ?2 n7 |! D6 z - }$ }5 H' S- |+ ^* z& o
-
2 I6 f5 X X6 e9 } - $items = array(0 f, w% B1 o- Y! H
- 1 => array('id' => 1, 'pid' => 0, 'name' => '江西省'),
" ?/ V8 C( U* y+ h - 2 => array('id' => 2, 'pid' => 0, 'name' => '黑龙江省'),
* k9 g L1 l0 e - 3 => array('id' => 3, 'pid' => 1, 'name' => '南昌市'),+ n) Z7 p0 j$ \0 P: P# k' B
- 4 => array('id' => 4, 'pid' => 2, 'name' => '哈尔滨市'),- {$ { P8 F3 w# @; D) W" d2 j
- 5 => array('id' => 5, 'pid' => 2, 'name' => '鸡西市'),% V0 U: {; {6 s: [& c
- 6 => array('id' => 6, 'pid' => 4, 'name' => '香坊区'),
3 z; n. c2 K+ g8 ?8 n5 P - 7 => array('id' => 7, 'pid' => 4, 'name' => '南岗区'),; Z3 O6 m7 |/ H
- 8 => array('id' => 8, 'pid' => 6, 'name' => '和兴路'),/ G% M. ^+ a. E6 G t
- 9 => array('id' => 9, 'pid' => 7, 'name' => '西大直街'),7 N% s& h2 ]9 W5 M$ G) W2 s8 n
- 10 => array('id' => 10, 'pid' => 8, 'name' => '东北林业大学'),* c) q- V$ V/ v* C' d+ l
- 11 => array('id' => 11, 'pid' => 9, 'name' => '哈尔滨工业大学'),
/ u" O: c/ }+ `( g - 12 => array('id' => 12, 'pid' => 8, 'name' => '哈尔滨师范大学'),2 M! A- ]9 b9 A/ k: l: q; W
- 13 => array('id' => 13, 'pid' => 1, 'name' => '赣州市'),
' A. k' Q, I# q3 z( d - 14 => array('id' => 14, 'pid' => 13, 'name' => '赣县'),# `- Z3 Q2 A* ^' D j7 m
- 15 => array('id' => 15, 'pid' => 13, 'name' => '于都县'),9 D( _! _- F3 _. Y: d7 H5 D
- 16 => array('id' => 16, 'pid' => 14, 'name' => '茅店镇'),5 l% R0 \; r b K% i
- 17 => array('id' => 17, 'pid' => 14, 'name' => '大田乡'),
& F8 T/ s. V" X% t* N3 S - 18 => array('id' => 18, 'pid' => 16, 'name' => '义源村'),
' H E5 }3 j& @5 k: A. I- n - 19 => array('id' => 19, 'pid' => 16, 'name' => '上坝村'),& X6 [9 u( `& i1 W( Q' `3 w+ K
- );2 X0 V# C$ f3 p* P8 `
- echo "<pre>";. X" Q( t3 G5 _
- print_r(genTree5($items));5 @, ^* N2 {6 A9 w( {2 m4 e% ?" T
- print_r(genTree9($items));( i: V2 K" |, J1 u) I/ s& n
- 7 O2 h' r* e" M. ?$ e: Y( N" L
- //后者输出格式,前者类似,只是数组键值不一样,不过不影响数据结构% Z, k% v$ T9 ]5 J/ [
- /* g. G3 r9 k) x
- Array) a0 _, @$ K. G5 y+ |. W4 j# i
- (; o' V' U% ^) p
- [0] => Array1 S+ V, I8 Y, h5 I" I8 w4 b
- (
9 u- t; t* ^) h9 ? e$ B+ } - [id] => 1
! }. K2 B, _; z E( T3 f - [pid] => 0
0 R& C5 I: C: P1 W - [name] => 江西省
0 ?4 y9 K' `; x7 e& U - [son] => Array9 T$ z" A/ X6 t4 N
- (
3 f& r# e5 q/ Q0 V l$ Y9 _: s - [0] => Array! y. W0 O1 w! e; X
- (8 h. }, U# O0 r p- Q
- [id] => 3
/ Y5 U0 L1 h$ a9 S6 ? - [pid] => 1' K% \# F( [1 r+ w/ i$ B
- [name] => 南昌市. R @) O9 [0 [$ j( J; ~
- ), P% i E6 u2 [
-
8 \7 m8 L4 W: L% O# U/ E - [1] => Array! J) g: u9 A1 v3 k1 H
- (/ K$ t$ x4 t I; o% x0 s7 d
- [id] => 13
5 u1 o* a/ `; n$ |9 _ - [pid] => 1) S& u* R9 K& z5 @
- [name] => 赣州市
6 i3 ~6 r) s+ J- V - [son] => Array# K' S- k: P, M
- (( ^- Y; M1 Y# O6 \: p
- [0] => Array
5 c. ~. B- u9 [9 x - (' ]. q1 o6 P$ g \$ R* J8 L
- [id] => 14+ J7 n, Y) N+ [) b' i" ]
- [pid] => 13% n ]0 |' [6 r$ K0 m% Z
- [name] => 赣县
/ I4 p" ^2 V: o/ A( I0 \ - [son] => Array
1 z& U4 N7 H$ L5 Q' [ - (
4 o2 v5 \6 C# d) R/ W+ l+ C! I) R - [0] => Array' X: J/ a. M- z- q$ f* U
- (0 G3 ]9 s) h- J
- [id] => 16
3 O8 Q& c. s: D2 O% v C- P6 o7 b - [pid] => 14
' N6 X5 K9 i5 R - [name] => 茅店镇
+ {3 S$ U* T/ E% G- ]& G7 [ z - [son] => Array9 i F7 J: P& ~8 }3 u- e
- (8 I9 N* n2 o) L
- [0] => Array( `9 W0 G- p: G
- (
( m& A8 |% m& G) g - [id] => 18! [* k7 C7 d8 e
- [pid] => 16
+ K* N$ A9 D" g6 U3 D - [name] => 义源村3 v3 J- d1 v5 T$ |, Z
- )! a% M6 }0 m) A; O$ B6 o
- * |1 L' }, t5 t& F
- [1] => Array
+ }% f i7 a# b; ]' f - (2 M2 u0 w/ d8 y& c' I& W$ H0 a
- [id] => 198 s; ]2 o, t& l/ u6 W0 K X
- [pid] => 160 @4 z9 Z9 c1 L
- [name] => 上坝村$ v0 u8 K& { I* Z& G( C
- )
0 g9 {: H# U- q8 G6 ` L - . P$ i# V2 v, v. N' S2 w* J5 P9 }
- )$ y. n+ f \7 X Y1 o, a( y
-
8 b' ^6 M/ _2 I/ S/ Y - )- q, z% L0 f+ E* ?' I8 \5 l
-
' y3 ]$ G5 j4 a& B - [1] => Array
( O$ o1 W2 p, N7 v4 z, Z( h - (
) P) g! g/ |# E" w g6 s - [id] => 17
: `* p( u7 ]0 W1 D5 \& H$ l - [pid] => 14* P" U: g; p3 _" F& n8 ]* J
- [name] => 大田乡$ x+ d) s" J' p
- )
; s* K$ B8 g% Z9 F* W0 h7 m" f - : B9 W+ W2 w% E, c* ]9 [
- )# Q4 |/ b' b; f, m1 e
- ; e4 J) K- J0 N9 v
- )% j; {1 U% V' i+ n! {7 p" J
- 3 |% Y) E: ^/ {
- [1] => Array
& f2 @4 Z1 s5 m4 K9 E: W4 i - (
+ w1 ?/ ~* |( W7 w6 O - [id] => 15% k: x/ u7 f# |
- [pid] => 13& p) t$ o Q6 N0 E) r; e) H
- [name] => 于都县
( }8 c6 v/ p4 A8 D: l. A* |7 c - )/ V8 U' h7 R4 y9 Y N1 S0 A: V! i
-
4 |* g" i; r8 ]1 v0 b - )" h Q! }" |8 S" H% r: O2 \8 ?
-
' u9 I- J' s9 Y/ t7 P8 I - )4 I3 B4 K1 Y9 Y9 l& j3 C
- ! {. v3 J$ f2 p" Y
- )0 y- b% K- Q/ Q2 `
- 3 t# j: @7 p8 D; L& w0 n9 D
- )
2 G( O. y, G8 p3 n, X% J; P - ( Q- w9 \4 l% Z/ I2 H' J i
- [1] => Array4 H: v$ v8 o; J
- (+ A& @* M4 m! A
- [id] => 20 A$ c0 M" W9 U3 X" O
- [pid] => 06 g# x: T, s, k1 Z- w1 I9 x6 ^" g
- [name] => 黑龙江省
3 w9 W" k) K* i9 w, E - [son] => Array
3 s1 n) ^; V- |7 {3 U$ M - (5 j6 d- p& Y$ } [. K' d: B
- [0] => Array9 q: ~& E, w/ M% H" d$ v* _' h
- (0 h: g6 n4 H$ r$ g7 ]
- [id] => 4
( X6 w4 s8 ]3 E: f0 q* I - [pid] => 2
( ?( ]$ d! m5 B$ z) L: } - [name] => 哈尔滨市& K, S/ E( h' C. j6 N
- [son] => Array' E' C4 V$ }0 i6 n1 B
- (
+ j* R% v H* R. E3 d& n9 O - [0] => Array
- G' {1 ]. n8 V, W/ | - (0 \0 f7 v7 i& @7 @, |
- [id] => 6
, M& ]% n$ i: q+ I - [pid] => 4
: ~( L, E/ o8 h# Z: m& a- O - [name] => 香坊区
0 e' n+ C2 \" Q7 n1 R, b; F7 k - [son] => Array6 L7 T+ }" v+ F! E. l6 i& D4 e0 [, N
- (
, i0 Z( T7 ^. D& z' ]5 M; a - [0] => Array0 a6 x2 q- h s
- (0 J' c7 y6 T6 F2 [5 ]
- [id] => 8
/ o0 ]1 ]. H2 a2 x" v& h" ]( a/ \3 v - [pid] => 6
. T/ M' Y: B! r5 j8 Z z - [name] => 和兴路3 A: j' H- X; J
- [son] => Array
3 S" {6 f# c# n `2 a$ t - (( b6 _4 B) `% a8 B
- [0] => Array
* V7 `4 X3 J4 I( O; I1 i - (
+ `( v+ O" @5 u/ u8 N# Z& u - [id] => 10
' b6 j) s5 T L1 L" W& n! |: V. K* D) H - [pid] => 8
) U$ L7 x: t3 S- F, a- B - [name] => " \( z- A& ^7 T' x
- 东北林业大学; [- ?. ^$ e- ^2 U9 ^
- )
% _# S; ?; ^& o: I P: l4 t -
, \, w4 B0 C* c7 K$ ?" |1 O - [1] => Array$ @7 J0 ^: X1 p+ F7 Z; y
- (/ {8 W0 M/ O; b: t) _0 `- m
- [id] => 129 M4 u: e2 I$ q
- [pid] => 8: W/ Z0 ? |1 |2 g
- [name] => 2 F4 R/ a; ^7 T( M' |
- 哈尔滨师范大学8 R" [# Q6 H9 h$ D! r9 ~
- )
6 I7 O: m7 T% J. q1 f6 K; q' X - 4 I3 L: c8 Y( ?. a) X
- )
. e r4 K4 \4 m! E - ) {* {9 {- `, }3 L7 w
- ) Q. r) M! l8 [
-
. \% y, F5 U8 {7 Z- @6 |1 v - )
4 V0 P Q* {; |+ J - ' o; v6 T% B+ ?* y7 ^
- )- f6 k$ h% ~, d5 n/ V4 v$ S
-
2 H1 s: E+ }/ {7 a" [8 X. d f; T% e - [1] => Array+ e- P# q: s4 [. v
- (
2 X# n, T0 z# @1 d - [id] => 7
( A% u+ F) m/ u8 l0 Z+ @9 l4 C t - [pid] => 4
: s( q. @+ D5 C ^/ Q x - [name] => 南岗区
6 j; F' f( T; w5 l( n' L0 O - [son] => Array& X% f# \; I7 D, z. S
- (
6 w8 I( k4 u2 t2 `, D% z4 C - [0] => Array4 g! V" R; D7 q
- ( M3 ?+ g% `( b# h- q
- [id] => 9
9 w! K. s2 J1 a5 G/ J - [pid] => 7
3 A. n2 Y) V. Z4 }. U; T9 `" {" ^& _ - [name] => 西大直街
1 p$ G- l" z- [/ B1 g& K - [son] => Array
5 I- N/ G( y! d* t; b- ^" q - (# K6 G* O$ [' B, D7 ?1 m" ?/ |
- [0] => Array
# |6 I" X$ I2 O: w. ~0 u% f - (6 t" D5 x) d# W; W6 I6 n1 F
- [id] => 11, R" y) E1 [/ V% A+ x a
- [pid] => 9, ?; P- Y/ n+ R6 m- }- R3 D x
- [name] =>
$ \! z) h) X# ~8 ?$ m - 哈尔滨工业大学$ E# M+ e2 G% {" x
- )
* r# c8 S4 ^* O -
" G0 n- O. O0 Y) U - )
/ X) K9 ~7 X+ A) ^. \ E -
' H6 g" ]9 L6 ]5 x w9 W6 U# T - )
0 z) w1 B/ _; v2 m& s; X - + d' J6 H' `3 x( e. Z
- )$ J1 ^; |9 i5 ~8 A t: e9 }/ j
-
7 o5 N D$ k% _ - )# T. n; x* W/ D. K: K& }- C
-
E# \* A- |, O - )
) \3 [, m2 H' W; j -
! C/ Z# F+ U+ ?- ~3 \: y - )
& Z, J: m9 f9 Q) E5 p -
. J# B1 r0 D1 u+ R/ X - [1] => Array) R8 x( T [4 J. \$ A
- (
' s3 E+ J- Q& x, C - [id] => 5/ `! v/ x3 n6 u+ B
- [pid] => 2
`6 W0 h j/ O. N1 A$ ?, \ - [name] => 鸡西市0 i3 T; N( z: W8 ?
- )8 ~& Z- q# R) R
- & \, o, P1 ~1 a7 s* s9 I
- )3 ~7 |$ r+ T) T9 L4 j# x
-
7 C. x8 j/ h+ w- C* `' b - )
* D! `% d+ S0 A - )*/
复制代码 可以看出第二种代码只用了5行代码就实现了无限级的分类树,非常值得大家的借鉴和学习。. F2 p/ Z8 M& k0 U
. J% R k6 X, o J# _
' E) j4 x$ `1 a& _- Q" T5 A
* R6 Q6 \- g' t" B. U# J
|
|