管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
无限级树状图可以说是无限级栏目的一个显著特征,我们接下来就来看看两种不同的写法。
+ N6 v& U# P# s一.数据库设计
1 X. c: F" J J$ p- CREATE TABLE `bg_cate` (
2 S5 y3 r7 s2 X6 M" U - `cate_Id` int(30) unsigned NOT NULL AUTO_INCREMENT,
$ [4 U- Q3 R- ~' }6 R - `cate_ParentId` int(30) unsigned DEFAULT '0',
; k- m; n( g$ ]" y$ H* ?, [ - `cate_Name` varchar(100) NOT NULL,' }9 k' r2 B' l& H& Z2 y& j
- `cate_Intro` varchar(500) DEFAULT NULL,/ O* h* E8 M4 K+ c7 X
- `cate_Order` int(30) unsigned DEFAULT '0',5 I8 f- @9 o" Y1 T& \0 S( k
- `cate_Icon` varchar(100) DEFAULT NULL,' w+ b! B, v+ v) S3 V( |$ f8 H$ }' [
- PRIMARY KEY (`cate_Id`)& S: R+ m E- B! s
- ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=34 ;0 e0 Q- l3 p: b8 e7 b2 X; Q
- --
- ~2 H: f2 x2 Q7 ]5 j - -- 导出表中的数据 `bg_cate`3 o1 y) ^+ `9 I4 r V5 ]" g
- --/ p. r( v3 Z# L- g( F9 B
- INSERT INTO `bg_cate` (`cate_Id`, `cate_ParentId`, `cate_Name`, `cate_Intro`, `cate_Order`, `cate_Icon`) VALUES" ^- q- Y q5 W& x9 Z+ k
- (4, 0, '往事如风', '记录往事', 0, 'icons/6.gif'),
! y5 v! o) P+ \+ R+ @ - (5, 0, '水煮三国', '品位三国智慧', 0, 'icons/3.gif'),! x5 G' d/ h0 i$ d# ?( ? G
- (2, 0, '技术学习', '平时学习的一些笔记,欢迎批评指正。', 0, 'icons/18.gif'),) L7 C9 N0 d- F0 P- N
- (3, 0, '生活点滴', '记录生活点滴', 0, 'icons/2.gif'),
& a1 v. D& ?- T" {% J$ h - (6, 0, '栀子花开', '青春无限', 0, 'icons/8.gif'),
! Q% l. E9 X4 ?# P/ q, n9 ~ - (7, 0, '假日休闲', '悠闲、自在', 0, 'icons/24.gif'),
$ R+ {6 D9 v# e7 K* E. w - (8, 2, 'html', 'html学习', 0, 'icons/1.gif'),3 N& n D8 v" |- X
- (9, 2, 'css', 'css学习', 0, 'icons/1.gif'),
$ q0 c4 m: S# R6 K - (10, 2, 'php', 'php学习', 0, 'icons/18.gif'),6 {& T6 [2 T: j7 w" j! e
- (11, 10, 'php基础知识', 'php基础知识', 0, 'icons/1.gif'),
, _! K4 W% ?. K, r3 |. D7 x - (12, 10, 'oop', 'oop', 0, 'icons/1.gif'),
8 R d- H" m. t1 ^- @- I" H - (13, 10, 'php安全', '讲述php安全', 0, 'icons/1.gif'),2 j6 o# a, J0 @5 H0 Z
- (14, 10, 'seagull framework', 'seagull framework', 0, 'icons/1.gif'),
2 s7 n4 C5 r$ J( c1 K( c' Z% ? - (15, 2, 'javascript', 'javascript学习', 0, 'icons/1.gif'), v/ W! ?7 i# j- A+ a) j
- (16, 2, '设计模式', NULL, 0, 'icons/1.gif'),
$ N- `6 w" |2 e+ _ - (17, 2, '软件工程', '软件工程学习', 0, 'icons/1.gif'),
# a) g! I4 f; J( W - (18, 3, '厦门生活', '厦门生活', 0, 'icons/8.gif'),6 e) f- ^. A! d3 _' e; R$ L: Y
- (19, 3, '大学生活', '大学生活', 0, 'icons/8.gif'),% c5 Q+ S% A9 Z, W1 L
- (20, 3, '童年生活', '童年生活', 0, 'icons/15.gif'),! O/ i/ `( p& H! P: d
- (21, 19, '学习', '学习', 0, 'icons/1.gif'),$ Y$ a* t1 [8 n( S. M/ g B, d
- (22, 19, '运动', '运动', 0, 'icons/16.gif'),' C7 \6 o# P: v( V; w- O5 u
- (23, 19, '旅游', '旅游', 0, 'icons/24.gif'),
% o+ z+ x- s4 R2 T) k7 _. @ - (24, 22, '排球', '排球', 0, 'icons/9.gif'),
4 ]; | ]$ ~9 {8 A6 M B - (25, 22, '篮球', '篮球', 0, 'icons/9.gif'),
5 i3 I( L7 f( U4 ?5 W1 j$ K* C# u - (26, 22, '羽毛球', '羽毛球', 0, 'icons/9.gif'),8 ]3 U+ D, h( U- z7 m
- (27, 22, '乒乓球', '乒乓球', 0, 'icons/9.gif');
复制代码 二.到数据库取数据,放到数组。
, d' k; `, M4 k( _4 s/ `" ]( U- require_once './classes/MyDB.php';
& h2 N! M8 t5 {; e2 n2 Q8 l i; ~ - $con = MyDB::singleton();
1 R1 J4 ]- O# E+ v; D( y& T. h - $sql = <<<SQL& d5 B. n4 T* H; I G9 p
- select * from bg_cate cate
) G7 c8 V1 D! `9 Y7 g7 O% L5 ^ - SQL;
0 {# K* u, S+ J' r$ [$ @ - $data = $con->getAll($sql);: e* K( M2 G7 T
- //print_r($data);
复制代码 数据库操作我用的是pear类库。4 K) t' W3 T% `' @) n. p, L
最后的$data的数据格式如下:4 \- b, B0 m8 F/ M1 O
- Array; c3 E( H6 q% o) m% y& O+ V |2 ~1 {- e
- (
: v) w8 L% X4 g8 K$ D" M J - [0] => Array
8 ], N8 K6 t5 W - (" ]/ U7 T3 f( M7 Y+ k7 x( g
- [cate_Id] => 4! b. M: f( d* N( {
- [cate_ParentId] => 0
. c- a9 [! d4 [2 \ - [cate_Name] => 往事如风 A8 E$ R5 [7 j" \
- [cate_Intro] => 记录往事
4 v) j) ?6 p& M1 @4 d. \ - [cate_Order] => 0
& |$ H* ?. l, n. w - [cate_Icon] => icons/6.gif
6 E, y$ f9 @% r0 R - )
. _( i/ `4 q5 N" R t) Q - [1] => Array; V+ ?! @$ N) {) @# n! a& s& r' s7 B
- (. f( a) L0 y6 e1 p( m
- [cate_Id] => 57 N( m3 m7 u2 U5 i+ a
- [cate_ParentId] => 0$ B, O" ~0 r1 @! G- b
- [cate_Name] => 水煮三国* C u; p* B; i
- [cate_Intro] => 品位三国智慧
$ _6 d: o4 |, a; ]% [4 b/ D7 Z - [cate_Order] => 0
/ S# _0 z' q4 M2 P# l& O8 B$ J - [cate_Icon] => icons/3.gif/ `! l/ c9 B. c+ e
- )
复制代码 三.把上一步的数据转为树型状的数组3 X X' y9 V* s, k) D: S* T) I
代码如下:& |7 r: Q3 \4 X; o9 n( @
- function getTree($data, $pId)' T& X. N7 s- A
- {, X' r, z% t* A4 l. n5 w3 @3 y
- $tree = '';) \# v$ N1 a! }! F6 k$ Y- o
- foreach($data as $k => $v) d* U) m1 L& Y6 L: t- K" e
- {6 {! m9 f; O6 g; h& r$ U
- if($v['cate_ParentId'] == $pId)
1 Z0 Y$ O t b0 L( y" L - { //父亲找到儿子
$ B7 E( A/ U/ R1 L ?: } O - $v['cate_ParentId'] = getTree($data, $v['cate_Id']);
4 Z- j1 k3 K# F - $tree[] = $v;
3 Z, |6 a3 z7 G6 X7 a9 o - //unset($data[$k]);
+ E, M: U9 H# i - }; Z5 x, y6 D! t9 E3 t6 A$ w
- }
5 W, P7 \) a9 ?- A+ U9 T - return $tree;8 [& U8 V. U# j! C# K6 R2 w* q5 l
- }$ U. s4 H/ n+ c0 j+ `( ~
- $tree = getTree($data, 0);
复制代码 最后输出$tree的数据格式为: l) X! S0 x: }5 H( s) _9 ~4 f
- Array) i7 c3 x6 r8 N. Y5 C
- (
: v4 T% { C6 @9 w2 g% F$ a( t: N - [0] => Array
( o6 i5 X1 @. U. V* f - (
x5 e* K5 }& h* W# d2 U6 j - [cate_Id] => 4* q/ ^- Q$ C' c
- [cate_ParentId] =>
! E1 @5 N, X m5 y8 I - [cate_Name] => 往事如风
# n2 a A' c( y - [cate_Intro] => 记录往事) h6 |- u" t7 X
- [cate_Order] => 0
9 w* z2 |- a$ n0 p7 ]+ Y - [cate_Icon] => icons/6.gif/ N1 R' D0 v# T, h* ]& y
- )
5 Y, Z8 c& s p6 ]5 r) L. K' d - [1] => Array
6 p, u& b) J" _# n3 @, a( }- h - (* e u: T3 h' {# z
- [cate_Id] => 5; |: L% E5 r2 {- I0 C
- [cate_ParentId] =>
( \/ u# u1 R1 A6 h/ \ - [cate_Name] => 水煮三国/ o6 P# j# \' e: @" T1 h3 S# v' d
- [cate_Intro] => 品位三国智慧
: _4 b) Y1 M8 I& h8 S* G - [cate_Order] => 0. s* ^; u6 e# n7 h7 P
- [cate_Icon] => icons/3.gif; V; ~9 {2 ^" W3 R' D
- )
" O6 `, F# R8 |# s) d$ q - [2] => Array
* p' @. N% L0 e% o" w$ u - (( X/ {, E' I$ s- B8 c/ S' J
- [cate_Id] => 26 y/ N1 O; j9 f, B- B+ m
- [cate_ParentId] => Array s' x0 P/ d1 i7 L4 n
- (
+ P1 j$ B+ ?. `; ^- i1 j' U - [0] => Array- g. _+ Z6 z6 T) ?/ f
- (5 c! ]9 t& G/ d8 X& m* E) O! s
- [cate_Id] => 80 t0 P3 E* W, h7 p* I4 q# L
- [cate_ParentId] =>
/ S; Z* D2 G6 a6 I) x/ t - [cate_Name] => html
" W: S+ L3 s1 v - [cate_Intro] => html学习5 p. c( n' t: K9 W
- [cate_Order] => 04 _# c8 p" D9 u* L1 C6 z0 J* l% o! D
- [cate_Icon] => icons/1.gif
! Z% b( \2 |- G1 @$ W9 `0 I' i+ \ - )
复制代码 四.把树型状数组转为html0 W% I; J- }+ }1 i6 y
代码如下:, d1 w- G3 W3 s8 }, h
- function procHtml($tree)
6 C$ K6 y0 d9 Q) S/ f - {
& p d( W* d; a+ ]; h& X5 R - $html = '';
8 Y- b9 n, G. T8 L1 H( X0 L - foreach($tree as $t)
3 W$ d& q7 b1 U* B6 k - {
+ A% Z' u p2 P, q$ j: I* {9 I3 ?" B - if($t['cate_ParentId'] == '')
l+ x! `' z) D2 I7 d& e6 n - {% U5 ~$ H4 G- ]7 {5 l
- $html .= "<li>{$t['cate_Name']}</li>";
/ V: R9 G6 K$ ] - }, M8 |6 q" T v
- else
5 q0 \- U. L" Q$ A, p, @( [3 f& } - {6 ^& s' a* w8 o% C) z
- $html .= "<li>".$t['cate_Name'];* c# X- }1 S6 H% O4 g- D6 t
- $html .= procHtml($t['cate_ParentId']);
4 X: o% V6 M' b) P - $html = $html."</li>";
( s2 J3 \/ O4 k' B0 O0 D# f - }
, a8 G8 [- N' e* u- U - }
. T8 h' K9 p4 ? - return $html ? '<ul>'.$html.'</ul>' : $html ;- ]- z) \, J+ r2 \6 S; j* D9 a
- }
" _0 Y' \( P1 T - echo procHtml($tree);
复制代码 输出的html的代码格式为:
7 Q4 V: S% w5 K" J7 |1 V2 J8 D3 H8 f$ o- <ul>" \/ y8 ]8 ]* [! t
- <li>往事如风</li>
3 B3 b6 v* R4 v% ~- v" Z - <li>水煮三国</li>3 u5 ]/ }$ s5 J
- <li>技术学习
* }5 l4 H, @% D0 n, N- \ - <ul>5 C% o' I( K4 w) s$ b" j; v
- <li>html</li>
: H7 @* g; r. i" L* Y - <li>css</li>
8 L7 K$ U3 f1 X5 H% H/ v( C - <li>php! O8 l d2 I P
- <ul> z. K/ b" H! ~$ \: Z+ ]: V
- <li>php基础知识</li>) L4 C) T( q+ p' p
- <li>oop</li># f; ?6 ]# [" M N
- <li>php安全</li>
复制代码 五.代码整合5 F) \! c/ Y1 m( H9 r
- function getTree($data, $pId)3 `* d$ C, g5 n: ?' I0 D
- { f# E+ ^& s9 U ~9 \: \6 X
- $html = '';; T, `% V D: w* d& [6 C# H
- foreach($data as $k => $v)
% ~0 h4 { Z$ M - {
. Y/ `( t# Z; U2 a+ |) W' l" { - if($v['cate_ParentId'] == $pId) r8 U0 S' \( A% g
- { //父亲找到儿子5 ^* F0 r/ Q0 U7 g' J
- $html .= "<li>".$v['cate_Name']; Y1 C( |! v: z& t
- $html .= getTree($data, $v['cate_Id']);
2 C5 `. z8 i7 ]" l- L - $html = $html."</li>";
' S1 x6 G4 g0 _* a" _2 b) ] - }' \* w3 z, K- p' B
- }
; m9 |" g& a8 V$ P9 H" s6 }. r$ A - return $html ? '<ul>'.$html.'</ul>' : $html ;- e$ }; T( w4 Z9 z5 d
- }( d/ X) y7 {1 R; _- ~' M
- echo getTree($data, 0);
复制代码 六.增加CSS样式4 l, K( a0 l% W# S
: q; ^0 w0 G/ x. m. A" U
/ G# F( M. R" y9 Z6 {5 ]
第二种是从开源网站上看到的,非常非常的简介。3 f) d3 F% g6 t# K4 g
- <?php2 m3 I7 W# G# _; R! x2 U5 H
- $ S' a9 }0 P7 S2 E8 t# d* e Y
- function genTree5($items) {
# ]6 z' M% [6 j- | - foreach ($items as $item)
2 J: C# s# w; [$ H5 d7 Z+ f; d& y - $items[$item['pid']]['son'][$item['id']] = &$items[$item['id']];
- x6 e O" ^6 n$ o - return isset($items[0]['son']) ? $items[0]['son'] : array();
8 E8 o" y. Y2 S& |/ [( c; O% D - }
, S; A0 `0 |" r7 L - % i, m3 E' A/ X
- /**
( y2 ?3 @4 E8 J - * 将数据格式化成树形结构8 J0 J% d& l8 ^" }9 g4 ~
- * @author Xuefen.Tong x; M8 [0 i0 e: `8 g
- * @param array $items6 o I+ P, u1 W* U- E7 [5 {
- * @return array 5 p. o8 C( @5 L
- */
# b% o0 W! U3 N$ n; y - function genTree9($items) {. R3 p; q6 E! g
- $tree = array(); //格式化好的树
: l6 w7 v, ~ S' Z. { - foreach ($items as $item)# A2 b' e' c8 ?* u% R
- if (isset($items[$item['pid']]))) s Q9 h& M' M/ N9 V6 I
- $items[$item['pid']]['son'][] = &$items[$item['id']];/ [/ w' P0 V# b! C: x0 E# v) R
- else
2 d6 W& D5 s0 h/ b: j9 } - $tree[] = &$items[$item['id']];
7 b! d# I, N$ O" {! P - return $tree;
& C2 q: K$ i6 J4 Q" O- j2 ^. U - }
0 l7 F( h; e1 A5 d3 W -
- N( X" f! L% @( S - $items = array(- C4 Z/ v- G1 W8 X
- 1 => array('id' => 1, 'pid' => 0, 'name' => '江西省'),' m% \! L* n+ B3 _
- 2 => array('id' => 2, 'pid' => 0, 'name' => '黑龙江省'),( ~1 R+ l$ L: v2 o9 w+ R2 ^4 C' t
- 3 => array('id' => 3, 'pid' => 1, 'name' => '南昌市'),& g, k2 {7 N# q+ W7 `; s6 k
- 4 => array('id' => 4, 'pid' => 2, 'name' => '哈尔滨市'),
; D- m" p+ {! C$ g - 5 => array('id' => 5, 'pid' => 2, 'name' => '鸡西市'),
# b4 Z+ `8 i$ X, W x1 E - 6 => array('id' => 6, 'pid' => 4, 'name' => '香坊区'),; [7 s' r- K3 `, ~" [$ k# C# I
- 7 => array('id' => 7, 'pid' => 4, 'name' => '南岗区'),
) z7 k! E ~% ?/ t - 8 => array('id' => 8, 'pid' => 6, 'name' => '和兴路'),
4 y7 ]2 `' X9 G* a - 9 => array('id' => 9, 'pid' => 7, 'name' => '西大直街'),, z/ i @3 O9 G4 A
- 10 => array('id' => 10, 'pid' => 8, 'name' => '东北林业大学'),
3 d+ g8 \$ X. T d, @0 V - 11 => array('id' => 11, 'pid' => 9, 'name' => '哈尔滨工业大学'),
/ _: W- i2 _' ?. A - 12 => array('id' => 12, 'pid' => 8, 'name' => '哈尔滨师范大学'),, m1 m f5 e4 ^5 H% G
- 13 => array('id' => 13, 'pid' => 1, 'name' => '赣州市'),# r) h* d3 x8 [+ G
- 14 => array('id' => 14, 'pid' => 13, 'name' => '赣县'),
! K& }" w& K1 M - 15 => array('id' => 15, 'pid' => 13, 'name' => '于都县'),2 u8 { b {% C5 I
- 16 => array('id' => 16, 'pid' => 14, 'name' => '茅店镇'),
/ p( X1 c1 ]# o, D( `7 o4 | - 17 => array('id' => 17, 'pid' => 14, 'name' => '大田乡'),
/ X, j* p7 X+ }9 m - 18 => array('id' => 18, 'pid' => 16, 'name' => '义源村'),
4 v' _5 @ v/ k2 k* ^3 ~ - 19 => array('id' => 19, 'pid' => 16, 'name' => '上坝村'),$ H" x! X' p; n* d u# j) h
- );: f# A9 k+ K9 Z( p4 [! J2 b
- echo "<pre>";' g- B" v; d2 |8 L" P( W, a
- print_r(genTree5($items));8 S, y' \1 R. }
- print_r(genTree9($items));
, ^/ |' _6 S( B/ f: P% c6 p" E$ j -
5 |4 Z6 Q2 v# ]; V, |7 R s3 s - //后者输出格式,前者类似,只是数组键值不一样,不过不影响数据结构4 p7 G3 B3 f" {' n, C. p5 n
- /*
% j: I! e: w6 o! G1 r+ l - Array
% R5 I9 h! e* f$ f% T0 k4 Y - (
, f# n& M D6 ^ - [0] => Array# q; L* j* ]1 a+ Z, k; F
- (: t1 O+ \" f2 N0 S& z* t
- [id] => 17 A @$ V! N% z! B! S
- [pid] => 0
3 [6 O6 s- a0 m& v - [name] => 江西省
+ K4 H& G4 M$ C8 C. Y+ o( `" }4 J - [son] => Array0 o: U/ s+ V$ Y( ]& R# _
- ( n% o& D# B+ `9 C- ~: u2 C
- [0] => Array5 L- {. s# X5 j% L* _3 ?
- () N6 U$ S z5 F z" s- z8 A( u
- [id] => 34 r# [' L7 j2 {+ g; j& Z% S$ B+ {. G
- [pid] => 1( }4 a+ V3 m0 {' |; n/ A
- [name] => 南昌市
1 t7 F& D. t# l/ m - )
! x, y* r& L5 H, |& t5 ]6 i - ) L) u/ ~3 W3 p( [; r( G ^
- [1] => Array7 p( ]: F# p: Z3 T2 c
- (
& g* O. C9 K; \9 [ - [id] => 13/ z7 w& D h+ H9 H J: ^5 I. b
- [pid] => 1 p, d, `! s+ J. t# i
- [name] => 赣州市8 _# G& s; H+ }: }7 @
- [son] => Array
: C# v' Z. \: p9 L* V5 I" Y- d - () L6 Q5 ]$ w6 r" p" }
- [0] => Array/ s& a! C- k" I' H& y
- (
; r4 {7 N& @: ?( g% q( w2 g - [id] => 14
7 S. {9 p* f8 L. {9 ~9 L - [pid] => 13
+ X9 Y1 W% ^3 f% f& J4 m' w - [name] => 赣县
$ I2 `- e8 m! R2 z - [son] => Array
: u' d5 T) B0 c4 H* x9 r - (% ^) D; G# Z7 \; _' M1 k
- [0] => Array
# U5 m2 s( R5 c. p - (
: v) G( k! r8 M6 X$ V1 _. n# p; g - [id] => 16. A% X4 ~8 j9 }+ I/ K3 s0 I8 |
- [pid] => 140 k7 |- w7 _; e0 w
- [name] => 茅店镇) R2 b* A5 S$ G$ z. M
- [son] => Array2 s3 a' [( v/ N" e
- (
. @( g2 e" B, J5 ]% Z- ? - [0] => Array% l4 e* d6 I7 y: v
- (& B" `! ?. @) @/ n
- [id] => 189 V4 d3 [4 P Z
- [pid] => 16
1 N7 a8 _7 i; k2 U - [name] => 义源村
2 b7 T/ E- Q! y5 ^: l* t - )
5 i; g* D) v8 X4 ]2 Z( j -
" l$ l' Z5 \: ^* p - [1] => Array7 X$ ?4 G o @8 |, |) [
- (
) f, }) m9 _9 F0 R - [id] => 19$ ~( r* V6 y3 T; T. w
- [pid] => 16$ D, J+ r3 |- f: A7 H
- [name] => 上坝村
1 F; h& c3 H; D) |; { - ), v* G4 Z& j4 L0 W
- % b# Z: I( R5 M: P
- )
, N6 r1 D( k( g: P - ! ?4 R f9 s. S m
- )
' u2 ^& i7 t3 O# H) C4 ~2 ^3 a -
) f; k5 J* i, d$ P& @! { - [1] => Array
; T1 g. _' \ N7 t; L - (" t! I! t' \% g' ?, Q+ k+ o A
- [id] => 17" R) m# S- D9 V/ D# Z! s/ {4 F
- [pid] => 14# j4 Z8 t0 ^% s# l
- [name] => 大田乡7 F' Q* C, t8 T) A
- )
5 g: L4 i7 \ T- a# S! g; o( n - 1 j! V B" d+ s1 u+ K0 s8 C
- )
0 N8 c) ?4 }4 Q* f0 ^! U% M - # D6 m! z) P$ c+ h: ~9 w6 }* L9 W
- )
2 N1 L+ L; D5 k4 V - ' h) V+ [5 V7 j8 x
- [1] => Array
6 R. i) c9 s2 h3 W - (
; g( c/ q7 y( Q) Q - [id] => 15
9 w% ~) A' h d' Y( l* y* L; r - [pid] => 132 Q, [1 y* Q( C3 A$ f" u
- [name] => 于都县
( c- j: P5 R( \2 R7 t% X9 i) K( H - ) s, w: y. u' X/ }$ B. _
- " x- M, A5 j7 [2 m
- )# c, e% e# W: q4 ?/ G
-
2 U- C; q" x" W7 ] - )! V. o' o. L: F! p9 W% e2 X
-
, n% r2 v' ~: O T% b3 n+ x - )9 d& P$ K5 x8 Y. \4 r
- * w+ ]: Z' f. f' V% |' I
- )+ {8 D! m+ W" d0 K- j
-
& @* E0 P6 J. i8 L$ o% w - [1] => Array
8 p' S# r* p9 f0 l! X - (
' V4 y# `9 o- N$ P - [id] => 2# s) F* v1 r8 q3 s+ d8 u
- [pid] => 0
1 [" m: m. {% R4 h - [name] => 黑龙江省
2 e, @/ _: i! |$ `9 X - [son] => Array
0 Q2 r& q- z+ Y - (4 M3 _' A7 T; E+ v2 ~7 H
- [0] => Array
. {4 B3 S9 M( b' E3 H - (3 |6 U! b, l& U% m9 F0 U
- [id] => 4
$ V: g8 x. i9 ?3 o4 B - [pid] => 24 I2 `( D/ o/ Q0 A3 R7 V
- [name] => 哈尔滨市
4 b" z, P* N7 u - [son] => Array
0 u& b3 B. o. N& a( K: d" r5 Z7 M& ~/ b! i! o - (
}2 B# w; M) A/ o - [0] => Array
+ \! l/ U+ r( Z; @ - (
+ h* i7 C' x2 n( Q; d' Y' y) c6 s - [id] => 67 o+ g# ^# r7 x$ A
- [pid] => 4
2 v3 r0 P2 ]1 m1 o0 p - [name] => 香坊区 A4 ~* {3 m/ L
- [son] => Array
3 w' Z7 Y, R% x! f - (
0 v& J' z& u) ^$ [+ n% R - [0] => Array/ e6 L. O6 |5 a" l
- (
9 t$ V# s4 L- M) y. R - [id] => 89 E1 L1 u, q) w% G9 B, v
- [pid] => 6
) a. J8 X4 w9 G% e0 \7 F' S - [name] => 和兴路
8 q% s4 ]7 L6 k5 j - [son] => Array( c5 `# V, i, ~1 k/ V
- (
4 B$ I a* x/ N1 |/ M7 d7 Y - [0] => Array
9 [4 C0 L$ T1 B - (/ O- m, ]* V* g T$ C9 N
- [id] => 100 K, L& D8 k, r, b d
- [pid] => 8
; g5 w0 `3 h& b - [name] => ; p) {! L* c2 n! N6 j
- 东北林业大学
2 f: h) V% @2 L; G: W- f. {" ? - )% s& G2 l: d/ m, r5 S* x/ m* Y/ H
-
& Y/ V) F) L1 M% x9 K - [1] => Array
1 B7 t& s+ j9 v% x+ K/ P - ($ O. {# q \0 K- V
- [id] => 12
/ U7 j) A1 Q5 J' J8 Z$ t" ~' _ - [pid] => 84 E7 L" M2 Y: \' X/ Q* A% a) m
- [name] =>
& C+ s& V1 t+ X/ ^ - 哈尔滨师范大学# Y+ o) N+ K: d* P: K' _
- )
( m" [5 Q2 Z* g7 ^0 J -
3 o% ~9 A4 ?. W# U - )
/ a9 t$ L& Z; x3 ^& G% p4 u -
, S' s% `4 q7 f+ o - ) ?2 w' z/ X+ l2 e& h
- % X! b8 i4 i+ z
- )
% r. v4 |/ n0 ?2 ?% r - - s& q3 p& E- o. c4 ^2 ^- F: R6 c
- )
8 m( G& B5 C- [ -
, ?4 I/ R/ r7 @ - [1] => Array
8 g( ` Z& d3 _/ n - (
1 B! q" `' `/ l5 |+ R1 b2 P' Q0 u - [id] => 7
" o' x* w8 F/ ?5 s/ m/ U - [pid] => 4
! U: E- ^; J5 r6 k - [name] => 南岗区- H4 A0 C ~- @9 V b
- [son] => Array
2 U- C2 o$ f( L, C+ Z, g# c+ ` - (
" ] O# e# C$ [* k6 F - [0] => Array7 D( [ Z9 B. X; o
- (. r5 ~3 D7 K8 W! R2 ]
- [id] => 9
( Z% k6 ^: c& L* `2 {( Y, m - [pid] => 7& E2 w( i& `$ J6 B
- [name] => 西大直街; }- M2 G* k: ?; T8 E
- [son] => Array7 d# u, r& r* J4 s. k7 Q% @
- ( S, O/ A4 J8 m3 r( [
- [0] => Array
5 t8 N! f4 q% Y7 t - (: n1 p" C: b P
- [id] => 11
, ?* q3 W- |, G4 e. [ - [pid] => 9
; q- _2 n+ Y8 m% }+ b8 F8 m - [name] => # j8 X- ~# f- v1 @. u0 u
- 哈尔滨工业大学
$ _: v8 x/ r* D2 k; j O - )
; m, p+ h2 m" f8 S+ D& Y+ c* y -
4 G$ q2 j" C! a! _) e# l7 _ - )4 u# b" H+ F0 I
- $ t, v' T) U: \1 Y& d" K5 l# {2 t) @
- )
. ~2 y# X4 j8 y -
1 P, s" i( r; r% E4 V+ T( K, y+ Y - )5 d- e; \& x4 \. m6 B
-
9 ~; z8 Z& I" v o2 W - )
1 U! v( v( T) F - " O. H S7 c1 d* X* M3 v* g# T7 b
- )
, u. c! o6 d* c! |' z& u - * G0 a7 c2 l, h2 d- I9 [: ~3 U
- )2 F* E w; X( D7 X% n* F
- & z: }9 Q8 ^( g
- [1] => Array
: T, ?$ J- G m3 j6 n - (- `1 a' L+ [$ U3 ~8 N w( T
- [id] => 5$ w9 @5 b, Q$ D6 H, ^% g( v
- [pid] => 2
4 d' a+ n: d( {8 x i1 ?) ` - [name] => 鸡西市
& q( U& M5 ~1 O6 ]- c8 ^ | - ), M( t' v2 U- U9 B! Y( M
-
f9 P) k6 S# d! q - ): @1 Z z0 V4 O* e
-
5 Q0 ?% s7 X0 O3 J! x2 i - )
$ w9 _& J3 a( ?7 O% Q - )*/
复制代码 可以看出第二种代码只用了5行代码就实现了无限级的分类树,非常值得大家的借鉴和学习。
w: P+ D$ B7 b: y$ Y$ U; D& j: z4 A. Z& U3 T$ y0 t
* C' v5 M! S3 W
: p$ n9 O1 v7 ?( _- p; F$ }& Y9 Q% t
|
|