管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
无限级树状图可以说是无限级栏目的一个显著特征,我们接下来就来看看两种不同的写法。
" b' w% q( ]7 v' w- q/ b4 v一.数据库设计
}: C7 y3 ~: v- CREATE TABLE `bg_cate` (
! D0 Q2 A8 |* Y: }- \5 o% y - `cate_Id` int(30) unsigned NOT NULL AUTO_INCREMENT,5 ?9 L+ |# r" x) p" ]& v& Q
- `cate_ParentId` int(30) unsigned DEFAULT '0',2 X* x0 l1 l( l& l# D
- `cate_Name` varchar(100) NOT NULL,: B+ J6 x4 P. F) C9 ?
- `cate_Intro` varchar(500) DEFAULT NULL,2 d/ C$ ^+ G4 `* @9 m& Z
- `cate_Order` int(30) unsigned DEFAULT '0',7 f' I! ^ ?& h0 w
- `cate_Icon` varchar(100) DEFAULT NULL,. e& V0 F7 e, A4 _1 t
- PRIMARY KEY (`cate_Id`)
: A9 l& _1 U, A9 ] - ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=34 ;) l. t% P4 y l
- --1 z8 W- H* h' L- q
- -- 导出表中的数据 `bg_cate`, h4 ~0 t7 R2 j: z- g
- --
& C0 F3 U6 [* M. `0 k - INSERT INTO `bg_cate` (`cate_Id`, `cate_ParentId`, `cate_Name`, `cate_Intro`, `cate_Order`, `cate_Icon`) VALUES
0 r) d6 N7 C n G: i2 [ - (4, 0, '往事如风', '记录往事', 0, 'icons/6.gif'),
- F% N( A; n; c - (5, 0, '水煮三国', '品位三国智慧', 0, 'icons/3.gif'),
/ g- ~/ K" t; Z7 x- H - (2, 0, '技术学习', '平时学习的一些笔记,欢迎批评指正。', 0, 'icons/18.gif'),9 R) ]2 ?6 \% C2 d' p' p! m
- (3, 0, '生活点滴', '记录生活点滴', 0, 'icons/2.gif'),
& y- V7 c$ a8 i( w) B. q - (6, 0, '栀子花开', '青春无限', 0, 'icons/8.gif'),3 u `) [% \4 w" `4 `* g) E3 G
- (7, 0, '假日休闲', '悠闲、自在', 0, 'icons/24.gif'),7 A0 N* C, p Q- M1 v
- (8, 2, 'html', 'html学习', 0, 'icons/1.gif'),
' b* U Q3 V: J: E - (9, 2, 'css', 'css学习', 0, 'icons/1.gif'),$ x9 z Z3 R5 ^. R# o Z
- (10, 2, 'php', 'php学习', 0, 'icons/18.gif'),
) f% K1 g. i6 w6 t# X- X. S6 c - (11, 10, 'php基础知识', 'php基础知识', 0, 'icons/1.gif'),$ ]5 q! W0 Q3 Q, b! A) j- G) }$ V
- (12, 10, 'oop', 'oop', 0, 'icons/1.gif'),
; D* d" M8 Z5 q5 K/ F. y - (13, 10, 'php安全', '讲述php安全', 0, 'icons/1.gif'),: M( S7 S' ~1 I# ^1 Z
- (14, 10, 'seagull framework', 'seagull framework', 0, 'icons/1.gif'),9 M) N$ t6 F: s! k! @- p) `/ {
- (15, 2, 'javascript', 'javascript学习', 0, 'icons/1.gif'),
# F1 O8 ?, l6 F& ]' e+ j* ^6 D. y9 K4 N - (16, 2, '设计模式', NULL, 0, 'icons/1.gif'),2 [0 C+ O# j7 v4 ]# T% R/ ?7 W
- (17, 2, '软件工程', '软件工程学习', 0, 'icons/1.gif'),
& m# P9 E5 `0 ^: K - (18, 3, '厦门生活', '厦门生活', 0, 'icons/8.gif')," K+ M# T/ x4 n0 u: B
- (19, 3, '大学生活', '大学生活', 0, 'icons/8.gif'),3 r( P7 B- ~4 s4 v
- (20, 3, '童年生活', '童年生活', 0, 'icons/15.gif')," U {2 q0 B& n
- (21, 19, '学习', '学习', 0, 'icons/1.gif'),
7 u$ {6 i" E- X. I/ W# M( x' n" e - (22, 19, '运动', '运动', 0, 'icons/16.gif'),4 X/ P0 O+ W$ |3 f4 M3 X& Z, ~. f* r' c
- (23, 19, '旅游', '旅游', 0, 'icons/24.gif'),- P0 `6 ]( ^$ H3 Y
- (24, 22, '排球', '排球', 0, 'icons/9.gif')," M+ r# v/ ]7 Z' @. t
- (25, 22, '篮球', '篮球', 0, 'icons/9.gif'),* Z6 `/ e) S# v( A q
- (26, 22, '羽毛球', '羽毛球', 0, 'icons/9.gif'),
% B; q4 R+ `6 ^. B/ u* n, _" C) f* Q - (27, 22, '乒乓球', '乒乓球', 0, 'icons/9.gif');
复制代码 二.到数据库取数据,放到数组。
! |- L. o- O% u& K0 Z q2 B# q- require_once './classes/MyDB.php';
: g7 b$ B, l8 s2 U - $con = MyDB::singleton();
4 ]3 }: z' H! c3 H4 b+ H( h - $sql = <<<SQL; u" I% J3 ~' d- Q2 u
- select * from bg_cate cate9 ^/ Q- p5 q) i& p5 Q9 l
- SQL;. B B9 U8 v& o3 ] P O0 i
- $data = $con->getAll($sql);
( N+ a- z! K# z+ @6 @1 t2 c( A - //print_r($data);
复制代码 数据库操作我用的是pear类库。4 l! q" \9 Y% } k% D! X' J
最后的$data的数据格式如下:: _/ S: o9 O b! ]( t ^/ f
- Array
% G2 k' a1 v- k4 S6 J - (1 w$ h# C% C7 [4 J+ i4 L# R% N( P
- [0] => Array c# G4 L9 i) t% R" W
- (1 _& {/ V/ ?' E( y
- [cate_Id] => 4
: U, w! E3 E, p( p; O( i1 c - [cate_ParentId] => 0
' o( L/ D. k7 \# X - [cate_Name] => 往事如风
- G+ }$ J! D! J3 Z7 W' D - [cate_Intro] => 记录往事& E6 Q0 ?3 c L C6 I
- [cate_Order] => 0
" z, B! @& ]4 r7 @+ n" R- Y( _ - [cate_Icon] => icons/6.gif% @) ~( }- |- n
- )
" O/ w! J; c# H1 R - [1] => Array
1 ~+ {" P/ O$ u. W7 \, o1 l - (
5 V! Z1 o4 \0 m9 C$ W: u1 U - [cate_Id] => 5
- C9 O2 `% a" S' A - [cate_ParentId] => 0
6 X; f! ^: X- K( r2 i - [cate_Name] => 水煮三国' p/ L; t- J7 w& [/ f0 n9 G
- [cate_Intro] => 品位三国智慧
+ z+ o ]7 n& T - [cate_Order] => 0 K7 _1 ~8 p. W7 }0 F, j$ A$ f# h
- [cate_Icon] => icons/3.gif" h" p0 c$ S- ^. L( Y
- )
复制代码 三.把上一步的数据转为树型状的数组
5 z$ n- r% |! ^# W7 J6 q, Y代码如下: ^+ u; p. @7 `4 n
- function getTree($data, $pId)
0 M9 Z; @" ?# E1 I- {8 f q D - {
6 l; x( m. G( V' h - $tree = '';
8 [8 n% ~% x6 a! r5 [2 e - foreach($data as $k => $v)
) E" P: @7 N$ p. O, o - {4 {$ l1 a; i( G/ ^
- if($v['cate_ParentId'] == $pId)) c/ ?: k8 j8 b) ^% p
- { //父亲找到儿子
* u) I8 F. A* a5 n4 d! x - $v['cate_ParentId'] = getTree($data, $v['cate_Id']);
7 q. s1 n l& \( Z# @ - $tree[] = $v;, A6 h8 e9 G8 B' @8 G6 X! S
- //unset($data[$k]);
$ @& @$ {7 ]' ]5 _' _% r7 B - }
0 i: b8 Y6 X6 M# L2 g( m( d" k# X - }
( s4 R1 e! p p - return $tree;# V/ R2 N" N* N, R. X3 p
- }3 w4 E9 Y9 W) _
- $tree = getTree($data, 0);
复制代码 最后输出$tree的数据格式为:! C$ L% z9 S6 v' T' G) [$ D6 H% Q
- Array9 W& S" U! s/ s* E- N* u4 s: ^
- (
M- D+ B+ J4 U - [0] => Array8 _% f3 \" o6 ], y, s, Q0 l- Z) w
- (/ ~/ r* I$ _4 G' M4 |' b$ r' n) H
- [cate_Id] => 48 [# H" b$ y8 {& ?% X4 C8 Z
- [cate_ParentId] =>% K! N; M- r* ]7 y2 T1 _4 C) h3 Y
- [cate_Name] => 往事如风/ v1 z0 a5 m9 S, F' q- ^; @ B
- [cate_Intro] => 记录往事' F7 H9 k2 n; b- m3 m) N
- [cate_Order] => 0
% s1 }1 j B5 U. b0 N) c: l$ f - [cate_Icon] => icons/6.gif- z O. C7 K% i Q4 l% ~7 W9 \: h7 v
- )( f% E# K% S/ }4 U
- [1] => Array9 ^3 w- h0 ]8 |/ B& V
- ($ F$ g6 d& J! V$ k( o# E" T5 T% q3 g
- [cate_Id] => 5
2 }0 n- I$ H# N - [cate_ParentId] =>
* W9 H1 _8 r& M% I G- i2 e - [cate_Name] => 水煮三国
- C# A" a! t% Q8 N) { - [cate_Intro] => 品位三国智慧
8 K; }: l9 [4 s) M% s$ m6 [) l; f - [cate_Order] => 0
+ y* ^) y) O1 G% E - [cate_Icon] => icons/3.gif9 b+ L# G# R7 [3 i* E% w! B3 a
- )
9 K5 T$ r( V6 V" {! G - [2] => Array! v3 S, @9 ~+ t. f
- (# t! B4 i1 g, M7 o% b6 }
- [cate_Id] => 2
* ?5 R8 b9 p- d; X+ R - [cate_ParentId] => Array
2 S9 F. A) [5 L% Q* \$ T - (
! S) t; J' C5 g, N& { - [0] => Array6 e) Z! g$ Q* g' K0 M
- (
' @' ^0 Y/ C; j! t - [cate_Id] => 8
- p3 f }2 q4 d( _+ V6 p' |$ t% v - [cate_ParentId] =>
$ Q0 I( v2 ]9 s+ L" ^9 e - [cate_Name] => html m" d3 W" v4 ?: k1 r
- [cate_Intro] => html学习2 q3 n/ l6 V8 ^& _% H# D' v
- [cate_Order] => 07 V: S( k& X+ Q" T; ~9 @: W3 b7 Q
- [cate_Icon] => icons/1.gif! H2 F8 |7 A. y: O. \( Q
- )
复制代码 四.把树型状数组转为html% x* F& v5 n+ i' f5 F
代码如下:" {* t6 `; p$ C8 n6 S' y8 c$ E
- function procHtml($tree)+ {& x2 g6 a1 Q2 O8 S
- {
% N: ?5 ^4 x' @; ~1 X w2 ^ - $html = '';+ X4 P' F2 F9 E2 S( q
- foreach($tree as $t)
" b+ F) E a( t& ]" X - {
2 R$ ^+ r, _2 a1 x - if($t['cate_ParentId'] == '')0 J) q* b9 {$ Z4 {* G" T* ?& o0 P6 I
- {( ^' ~7 i7 ~5 g
- $html .= "<li>{$t['cate_Name']}</li>";3 W3 y% i; ^5 o1 o, C! ~2 @' w( ~
- }; o$ W1 X) @, I. O
- else4 ~" s: k: @1 X: }* }! t
- {
! {! t T; c0 _5 e - $html .= "<li>".$t['cate_Name'];# v- o3 n. v, s; Q+ z
- $html .= procHtml($t['cate_ParentId']);
, a. }: i0 q: \; g4 h - $html = $html."</li>";
( G$ t: R) N9 h% A - }
4 E4 y2 g% a: O. V' x9 g1 Q - }8 h+ b1 C2 O% g* h! ?; X% w
- return $html ? '<ul>'.$html.'</ul>' : $html ;
% _% }) Z. }9 G' } - }
, u! [9 b2 a4 J - echo procHtml($tree);
复制代码 输出的html的代码格式为:
6 v1 ^8 g8 X$ @" F- <ul>
A9 T3 Z% @: n$ e9 D X. u+ L - <li>往事如风</li>2 R2 D) |* u8 R# o, i( o
- <li>水煮三国</li>
, f8 i0 u( e: ^8 W - <li>技术学习0 t! P. Y3 i; B- b% f5 p7 z
- <ul>
, j" M) B; h2 ^7 p4 U x - <li>html</li>
/ W/ s: j/ I" i7 K8 I" R' o V - <li>css</li>
, f$ _5 i. a0 a- |& X - <li>php
. _: Z8 o: } N- a* ^% {! x' Q) r - <ul>2 K6 T# `7 s3 y" [6 g t( `
- <li>php基础知识</li>- x8 g2 e9 {( b% `$ D+ M; @
- <li>oop</li>" q. Z, y( g) _. i% l
- <li>php安全</li>
复制代码 五.代码整合
) [+ t* x0 W- U9 c3 i& M' T7 P% P- function getTree($data, $pId)/ a# a2 k- |* |" {: d5 o, ?
- {; q# c9 O2 s9 n W
- $html = '';
) d3 k3 a. T" [3 J! g+ A+ _ - foreach($data as $k => $v)
) |; h0 |/ n8 r8 t- a - {# A5 Q9 b- S7 s1 z
- if($v['cate_ParentId'] == $pId)5 a' |( q9 j/ v A
- { //父亲找到儿子; z7 M7 Y, |- B g1 y) U1 V& h8 t
- $html .= "<li>".$v['cate_Name'];
1 n+ H; u' m4 T$ p- b - $html .= getTree($data, $v['cate_Id']);
5 e- K$ b. n! n$ S - $html = $html."</li>";. V4 W/ e' v, [- Q( m
- }& g V) {. J! r
- }
4 \% g/ t* Z' @+ T# l$ R/ ]. N - return $html ? '<ul>'.$html.'</ul>' : $html ;
' f. p7 w K0 h3 b' y) v4 z; ]* I) z- p - }
" [3 m$ ]; A, x - echo getTree($data, 0);
复制代码 六.增加CSS样式; U) d- C1 [- F
) f/ ~6 s2 @5 D- y0 |6 q3 H3 Q# [
% F) U: Q9 T o; Z* e N2 r* N; c$ K
第二种是从开源网站上看到的,非常非常的简介。
C0 z& i, J4 G9 j* b- <?php6 |/ w6 n) ~, s! {
- $ ^! }8 O& _& |. A' a2 U3 \3 ^4 o
- function genTree5($items) {
8 `$ q7 x$ L* X- L - foreach ($items as $item)
; G/ i' R) e8 V* L( X6 m% q t - $items[$item['pid']]['son'][$item['id']] = &$items[$item['id']];
) T0 m" U! r% a" ~( ` - return isset($items[0]['son']) ? $items[0]['son'] : array(); 9 ]) m4 t0 e. O. w% q& i
- }
& o% { R% k+ Q! V* r, C& T- E - 5 J: |% z* y2 e1 [+ `
- /**! Y& Z' Y) N$ c
- * 将数据格式化成树形结构
& o& F: z& [: M - * @author Xuefen.Tong/ x. b4 l$ ?! i8 x0 L9 l
- * @param array $items
. S2 ?- T9 @+ O8 R* [ - * @return array
4 Q5 K3 r8 X4 e' A. @ - */( a3 E1 [7 e3 p0 O
- function genTree9($items) {
1 \) o8 P! w# P) M5 f' C - $tree = array(); //格式化好的树
2 J4 N! R2 T* k5 b% f8 E% o; S; T - foreach ($items as $item)1 }% T: K; l! `5 s8 [
- if (isset($items[$item['pid']]))- F# ~; [' j( @
- $items[$item['pid']]['son'][] = &$items[$item['id']];
* N8 i! E/ J3 A" ? - else
" r* _; _ A4 s% ~9 D, z: N - $tree[] = &$items[$item['id']];; n2 u k2 L) p" i2 P. @
- return $tree;
* Y* M) C! z9 q; v - }; Q0 D1 m: j2 R; ^$ |2 D
- # y. D' @2 j% C) a: U
- $items = array(( |& P6 _3 m$ D1 t2 Z) E
- 1 => array('id' => 1, 'pid' => 0, 'name' => '江西省'),
& N) |. l3 ]9 N9 x' r - 2 => array('id' => 2, 'pid' => 0, 'name' => '黑龙江省'),
; H7 l6 G/ `% i! S. e - 3 => array('id' => 3, 'pid' => 1, 'name' => '南昌市'),
, |' |5 r9 P% c6 G - 4 => array('id' => 4, 'pid' => 2, 'name' => '哈尔滨市'),' N F+ ?5 j) M/ H- x
- 5 => array('id' => 5, 'pid' => 2, 'name' => '鸡西市'),5 G1 i8 A- I7 [$ D
- 6 => array('id' => 6, 'pid' => 4, 'name' => '香坊区'),
& \, |1 T c7 G; \& |- [ - 7 => array('id' => 7, 'pid' => 4, 'name' => '南岗区'),& P# z( F4 {! M+ ?9 Z" C
- 8 => array('id' => 8, 'pid' => 6, 'name' => '和兴路'),& E$ ]8 j' W& h9 e
- 9 => array('id' => 9, 'pid' => 7, 'name' => '西大直街')," X# p3 U, i" T9 T
- 10 => array('id' => 10, 'pid' => 8, 'name' => '东北林业大学'),
2 {; _; T0 s t5 | - 11 => array('id' => 11, 'pid' => 9, 'name' => '哈尔滨工业大学'),3 y3 r# ` n; E
- 12 => array('id' => 12, 'pid' => 8, 'name' => '哈尔滨师范大学'),
* J4 J6 x, h, j* A4 { - 13 => array('id' => 13, 'pid' => 1, 'name' => '赣州市'),
. F: J; L. G9 k/ X9 q2 f$ `% o2 O - 14 => array('id' => 14, 'pid' => 13, 'name' => '赣县'),: v e/ f4 f8 R4 `+ E" w! w
- 15 => array('id' => 15, 'pid' => 13, 'name' => '于都县'),$ c% k+ \) {8 y, Z, e
- 16 => array('id' => 16, 'pid' => 14, 'name' => '茅店镇'),
' F$ d Q& t, k - 17 => array('id' => 17, 'pid' => 14, 'name' => '大田乡'),
: U N0 D- c- z& Z - 18 => array('id' => 18, 'pid' => 16, 'name' => '义源村'),0 }6 j( _/ z& z. N0 T" _
- 19 => array('id' => 19, 'pid' => 16, 'name' => '上坝村'),5 D& h* K9 z: r) [' ~' I, C
- );
3 C; r! N2 A7 { - echo "<pre>";6 @1 i) @. m; i# p0 D$ c
- print_r(genTree5($items));
* a1 @- u4 n- K* a; w8 H" b( x - print_r(genTree9($items));
E" I& y7 b2 ~# q% X -
% t' Z5 D- e Y, ?9 h, m& y - //后者输出格式,前者类似,只是数组键值不一样,不过不影响数据结构
0 t7 }) J8 M6 `' V1 ^ - /*' _& f d9 p" [( M1 l! A2 K/ |" s
- Array
: g% A# [8 H- C/ S+ b. S# I - (; E; ]* ~1 G; ?
- [0] => Array
& j4 n3 k4 P2 U8 C0 f - (- R: D( \1 i" E9 \
- [id] => 1
# ]/ k+ p4 ?2 t- v - [pid] => 0
! C- b2 ^) h* \$ _9 _: }+ Z7 Z I/ w- D+ n - [name] => 江西省
% [0 s& c1 Z# r5 i - [son] => Array
4 Y8 m: A1 S& l$ S4 { - (
2 b" G% D! \) N+ x) m# A - [0] => Array9 e! ~3 p% e9 t! `! M
- (
7 e5 a3 ^0 V# k8 N7 K* U, u" L) v2 I - [id] => 3, R5 X ^0 e& a' K/ P& G/ m& s
- [pid] => 1
8 L/ {% T6 W' \" J' G0 ` - [name] => 南昌市
0 T' G2 k* w) r& ~ - )
2 p- ]6 D' n4 e9 {6 ~4 A - ; L, Z: J; V0 `
- [1] => Array6 h% }6 X0 ]( x e0 f! A. H
- (. Z1 g5 D$ T0 C
- [id] => 13" L% V0 A6 X! @0 @ Q ?
- [pid] => 1& {0 ]1 S4 J# U1 m4 j1 F/ d3 F y5 N
- [name] => 赣州市5 i4 _4 p4 {; f8 K- T
- [son] => Array- t h% o* G. p& j1 w
- (; V- m, a( Y4 ~
- [0] => Array
6 q8 B' R0 {9 ?4 K$ b6 l - (5 ?$ l3 A. n2 o5 d: F3 L
- [id] => 14% A; d8 s- a) k; b: G
- [pid] => 13
: R+ a/ n: v5 D$ G( _ - [name] => 赣县$ Y; f+ k3 D) }! b
- [son] => Array
# z" U5 t- n, l - (" y3 J D" O1 F4 d3 e% \
- [0] => Array
2 ^3 R/ N2 a5 a6 o - (
5 Q/ o, D) v, v* w/ G2 ?" [# O( z% e - [id] => 16
6 q0 @- B* u2 Q - [pid] => 14
6 }; W; f" a# P9 @: Q+ ~ - [name] => 茅店镇$ Z) N6 }+ l/ n: [
- [son] => Array
! C `) Z& s% f3 M - (
& G$ r8 q/ B; F/ k - [0] => Array
- T- d2 R" P/ Y' ?1 c - (2 d5 _7 `' o4 p5 c: w
- [id] => 18. L7 I( y" Z% m% ~+ q, @. G
- [pid] => 16
1 |( b% Y* K- g - [name] => 义源村( Y7 T' t d; N3 N! U0 n
- ): X0 ] r* d/ T3 |
-
3 R; K. i) Y' T) c0 u - [1] => Array
0 D) w) y/ c$ R. e - (; p. c1 I+ Q A) t" w0 N, Q% R: V
- [id] => 19* \) n) T: @- C2 V
- [pid] => 16
* q" ~% a& l2 B7 D2 Z0 ] - [name] => 上坝村
9 d& j/ M& _) c @4 N - ), H% \2 e0 L3 H/ s h( ?, V0 C/ w
- " N$ \7 v \+ x% ^9 q# w
- )
1 ] s- e8 R9 |9 U - 7 q/ x& o: a* K% i
- ). \$ U+ K1 E! I2 U" L
- 7 M: j7 @' S* N, f
- [1] => Array# @# i9 h/ |) |
- (9 K. U# D! q% r% ]1 X3 y
- [id] => 17$ p' w5 }# c ^0 m
- [pid] => 146 A. K& g* |1 E9 K# u% t
- [name] => 大田乡
4 Z" I' \; n1 }. z) [+ v! I - )
2 H$ X. z! q& L5 G - ! U1 s& T4 E- w* h3 v7 m
- )0 K6 {' k: u" Z: B4 a5 f' b0 R; e2 D
- F! F% M0 L: v: j. _+ h
- )
6 [3 [( T) q9 Z -
; M2 b* S" x2 B7 X! j2 G9 z& _. e. f - [1] => Array" X, C7 z$ R# s- b r8 M
- (. T9 I* v f7 m1 w- y# A" h# B
- [id] => 15& W& p$ t, k: l1 G+ J2 q0 S
- [pid] => 13
) t. d7 b* m: E( t; A4 I! l3 s - [name] => 于都县+ r4 A3 V; g% i- _3 \1 ?
- ). |! w5 ~) D2 p1 A
-
; m/ Y" ]2 }/ d& R O, H( G - )
; m& `# O( A. x2 J; z0 I3 H - / o( X7 X# i8 B3 j
- )5 M( e' Q6 F/ W: Q; H
-
5 u. v/ C( n2 O: h: L - )+ ^" F' ]0 |# j6 `+ b
-
+ I0 r" X; l' Y6 B- b+ X4 @ - )
: G0 O6 V1 @- ]; Y0 b -
: H5 q5 V, p5 D3 u: X - [1] => Array
5 j! C4 v9 ]0 m- Z4 K/ N8 [1 w- x - (
5 I/ [; B/ v2 _: C - [id] => 2
}$ b: z0 Z. B8 ?9 n) {7 v - [pid] => 0+ Q% |9 t- Q) P) W
- [name] => 黑龙江省
- k3 {8 j, h7 X/ j E5 l2 V - [son] => Array
: S" z y4 p* k' p0 w - (4 J7 U" m! i/ e$ ^1 a$ x+ V
- [0] => Array7 N% _* O6 F% W
- ( m, ?! ^& l7 H$ u" {9 n- v' f* n/ j
- [id] => 4
$ }# ?+ V1 M6 s, i- b) v& V - [pid] => 2( G# H: o, X5 m$ p+ o
- [name] => 哈尔滨市
9 u# d! e( s; J5 s+ l8 _5 r - [son] => Array
' J$ H2 _' ~: d2 X- r, D. j! { - (" u, U* h1 g( r
- [0] => Array
; J. U% f6 S0 | - (! P: b, z* \0 a, W1 R
- [id] => 6
# }7 K( c; _3 _4 J6 [. u - [pid] => 4- l5 i+ E% T8 h& F& V
- [name] => 香坊区
3 z4 z0 T" y6 t( K - [son] => Array
7 k7 `' e1 L& e5 H l - ($ D% ~+ q8 ^. M: t: ~) [. @
- [0] => Array
8 K! q3 H$ `; C1 h) P - (8 A: v2 T# N' s) N$ o h, q
- [id] => 8
) O O) ?' _/ C/ n - [pid] => 6( j0 B; ?) n) q5 r: w
- [name] => 和兴路; e3 i6 _+ R! q# c$ P
- [son] => Array
' }: x# L. a3 Z2 j" d5 V - (% s! _! G i7 S, [
- [0] => Array7 [5 r) p- v% m/ t# ?
- (
. i/ Z% q( O. t. H - [id] => 10
7 |3 n; h: P3 {8 E0 B8 K - [pid] => 8" Y. {. V' R( X4 F7 B
- [name] =>
! s0 d# N, p( M! B9 v - 东北林业大学7 ?8 w" ^+ M. W3 A9 o2 ?* M1 L
- )
5 ]+ \/ A1 w* q! f - " Z- ?/ G4 H7 i* [- ?0 O7 A) z
- [1] => Array
$ V. r2 U5 F" D) c7 D1 {/ P - (
3 H# F/ n* \" }6 U! m - [id] => 124 ?+ g9 p: W* p/ w4 ]4 d
- [pid] => 8. b2 b% u& @- ^ j1 b/ e4 {
- [name] =>
8 w/ S: p Y. i+ C' _6 s - 哈尔滨师范大学4 A/ `: A3 R2 P0 ~1 N# y p& c
- )4 P2 m$ r* C6 z1 ]
- 9 m' k; l) Z. v- ~4 J! \. N
- )
( u9 y9 P5 X# q5 y8 e4 a4 n -
4 M! X9 G8 H9 g4 H - )
- {4 _1 f1 O' ?1 e2 a4 m6 L -
6 B4 H8 K7 K1 h - )* p! e+ {5 h* |2 _& n
- 5 x ]3 H! t% m% s: W% U# S
- )
9 {+ {- b( D6 c - / W* X0 k/ }) t% ]8 b
- [1] => Array2 N5 m, b9 R" e
- (
! j0 a" ]4 J0 M6 b. }$ V - [id] => 75 T0 T# b3 G7 L7 | n5 \& I! x7 t; U G
- [pid] => 4
4 m7 _% r+ p: O - [name] => 南岗区7 v3 L; {$ i g$ R
- [son] => Array. c9 U" I+ C1 g# x8 s) p, d) w% i, O
- (; @& M& @0 R: Q3 f$ g+ {0 @, {4 [. m
- [0] => Array- W3 F3 z9 ^) T7 O7 ]+ K! A
- (' K3 E* L+ k0 C. X
- [id] => 9. `3 W# Y$ M8 V; `2 ]9 H% T- }
- [pid] => 7
. s: p' O( k- {* H) j - [name] => 西大直街# v; y2 n, [9 }. f9 W$ }4 v, O1 r
- [son] => Array& H0 m+ D- L' Y4 E! E! i
- (
) H' k6 k! @; @0 m - [0] => Array9 F1 s6 V. Z; d \# [0 L) p1 [
- (
: H; U, ]' |* {4 Q) p, q1 u - [id] => 11
, t0 r3 Y7 o. j, n' l0 a - [pid] => 9
. P# c6 I0 g: ^0 q4 _% Z - [name] => & \1 o- C5 G! T, x: O }
- 哈尔滨工业大学4 r: q) O }2 b. z9 T7 Q
- )2 G( J: q2 k) v! Z4 {% q: A
- , d9 @* z$ t3 a0 a: n7 g
- )
) c. Z" ~' h ]! q' e -
% A+ e7 }* D+ C - )# }" r1 y" d# z
-
6 u' h' |9 E. l7 | - )
$ J' g* P; ?0 P$ U) }, K1 { -
" M& T( ^- H) d, ? - ), U; m' }2 a- K5 b/ ~& M" t; s7 P
-
. D1 p% F7 x% D5 V& {1 g - )
2 i# o0 d; D+ E9 f9 B. M -
* x% f% N: P/ t* R. _1 `( z - ) }- z. g- g2 S4 k- B& T! m+ E# z
- : i* a% X" L* \
- [1] => Array- t- \# F& y6 K V! H1 I8 W
- (- B4 Z* I+ j2 [4 U( I5 n# {4 k
- [id] => 5
7 [: _* r7 o1 Y$ g+ S/ | - [pid] => 21 c, r$ a; I. u1 D3 |; Q" M1 H- g
- [name] => 鸡西市; v: S" T$ v# j$ K* [
- )
4 f) c! _3 x' j. }( K; ]) n2 c2 ^ -
. W. F0 ^- s& p8 F% A& c - )% C: ^7 K, b' a8 G7 b) }: W& \
- 3 w# z9 t/ N" y. i6 ~+ c; p5 l! q
- )3 V a4 x4 E# W: Z. r$ \
- )*/
复制代码 可以看出第二种代码只用了5行代码就实现了无限级的分类树,非常值得大家的借鉴和学习。
: }4 W( {, X5 R9 |" j& y: K$ P c* \" u2 A: h* n) f5 p F
2 |" R/ I/ E: q' r% o
+ K5 D5 J& P! g1 E. V/ @ |
|