您尚未登录,请登录后浏览更多内容! 登录 | 立即注册

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11603|回复: 0
打印 上一主题 下一主题

[php学习资料] php递归实现无限级分类树

[复制链接]
跳转到指定楼层
楼主
发表于 2018-8-8 00:59:47 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
无限级树状图可以说是无限级栏目的一个显著特征,我们接下来就来看看两种不同的写法。% D1 }: r- y" k' {& W3 ]
一.数据库设计) U" h# b+ E0 _* H: V0 K
  1. CREATE TABLE `bg_cate` (
    - e+ H  E& f0 j0 j
  2. `cate_Id` int(30) unsigned NOT NULL AUTO_INCREMENT,
    2 `8 O$ R, x/ P* @* t$ Q
  3. `cate_ParentId` int(30) unsigned DEFAULT '0',
    % z" |4 `  Q& K$ J6 G0 f
  4. `cate_Name` varchar(100) NOT NULL," |- s% ~  b" @) ?6 q
  5. `cate_Intro` varchar(500) DEFAULT NULL,7 _/ s4 }& B8 R, o* z
  6. `cate_Order` int(30) unsigned DEFAULT '0',
    ' h. ~. h6 J& x6 h4 q4 {8 B
  7. `cate_Icon` varchar(100) DEFAULT NULL,9 s1 ]* V. ^3 L
  8. PRIMARY KEY (`cate_Id`)
    + `# _# A- G4 u6 T. o7 M
  9. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=34 ;" N6 N/ [' N& c4 J
  10. --9 @3 N# s1 ~1 J) I
  11. -- 导出表中的数据 `bg_cate`' t9 ]% }! q& M8 f9 {+ Q/ w
  12. --4 [8 ~" \6 t* T. |, @# R1 l  y1 S- C1 ~
  13. INSERT INTO `bg_cate` (`cate_Id`, `cate_ParentId`, `cate_Name`, `cate_Intro`, `cate_Order`, `cate_Icon`) VALUES
    2 j& e" I& J1 B- p$ m4 U! P; ~) z
  14. (4, 0, '往事如风', '记录往事', 0, 'icons/6.gif'),0 P7 A8 m" P( j- d, G0 m
  15. (5, 0, '水煮三国', '品位三国智慧', 0, 'icons/3.gif'),6 m8 A: r; \9 v" I
  16. (2, 0, '技术学习', '平时学习的一些笔记,欢迎批评指正。', 0, 'icons/18.gif'),
    9 b$ h! \0 [5 |' _* R' c3 i
  17. (3, 0, '生活点滴', '记录生活点滴', 0, 'icons/2.gif'),
    + [- i+ z+ e( }. O% J6 \# C
  18. (6, 0, '栀子花开', '青春无限', 0, 'icons/8.gif'),
    " o; z7 t" k, o7 t; c
  19. (7, 0, '假日休闲', '悠闲、自在', 0, 'icons/24.gif'),6 m, n- O) S. A: F" f2 s$ z3 [
  20. (8, 2, 'html', 'html学习', 0, 'icons/1.gif'),+ Q: L. W6 |; l+ Q4 h9 ]
  21. (9, 2, 'css', 'css学习', 0, 'icons/1.gif'),
    ! ^! }" ^$ h8 ^9 O- I, d3 |* {
  22. (10, 2, 'php', 'php学习', 0, 'icons/18.gif'),
    4 [( k+ w% y/ A& m. G
  23. (11, 10, 'php基础知识', 'php基础知识', 0, 'icons/1.gif'),
    $ m) e+ U9 \! d$ E; A
  24. (12, 10, 'oop', 'oop', 0, 'icons/1.gif'),
    , W% x+ m" A1 F/ j( M( e, }/ H
  25. (13, 10, 'php安全', '讲述php安全', 0, 'icons/1.gif'),
    9 [$ l! z+ @' O# t4 b5 S
  26. (14, 10, 'seagull framework', 'seagull framework', 0, 'icons/1.gif'),
    0 e5 x2 Y7 B- ]
  27. (15, 2, 'javascript', 'javascript学习', 0, 'icons/1.gif'),. ~9 L6 T# v0 Z
  28. (16, 2, '设计模式', NULL, 0, 'icons/1.gif'),9 k. ~& T; f( C- t8 _- A3 t4 G8 e
  29. (17, 2, '软件工程', '软件工程学习', 0, 'icons/1.gif'),
    : C! F6 k  m2 a) w6 J0 m
  30. (18, 3, '厦门生活', '厦门生活', 0, 'icons/8.gif')," I4 p; \, z$ H1 G: P3 H
  31. (19, 3, '大学生活', '大学生活', 0, 'icons/8.gif'),
    $ K* S! |0 E& \6 {
  32. (20, 3, '童年生活', '童年生活', 0, 'icons/15.gif'),$ _" i4 B  @, d/ W& l: i+ {
  33. (21, 19, '学习', '学习', 0, 'icons/1.gif'),
    3 o. Z# u7 A3 v2 Y# S. {! f
  34. (22, 19, '运动', '运动', 0, 'icons/16.gif'),, u, Z/ b% c8 s0 Q
  35. (23, 19, '旅游', '旅游', 0, 'icons/24.gif'),, X- X; W$ `8 z+ u5 n0 S1 U; ~* A4 v
  36. (24, 22, '排球', '排球', 0, 'icons/9.gif'),
    7 i$ r9 H$ U% M! N# d( s! b4 i
  37. (25, 22, '篮球', '篮球', 0, 'icons/9.gif'),& M6 @6 q. w: R! b% q
  38. (26, 22, '羽毛球', '羽毛球', 0, 'icons/9.gif'),' i# o5 ~. n2 F" T
  39. (27, 22, '乒乓球', '乒乓球', 0, 'icons/9.gif');
复制代码
二.到数据库取数据,放到数组。
4 M6 f' C  ^% i! v/ v2 F
  1. require_once './classes/MyDB.php';
    $ R, V4 m7 B# j! A# Z3 i7 a
  2. $con = MyDB::singleton();9 D  c6 \- N7 i) P% \
  3. $sql = <<<SQL: b7 M4 m# C% {1 W  g: l
  4.    select * from bg_cate cate$ h$ d9 j% U- ]3 v
  5. SQL;
    " m1 W# o. \$ p$ z5 X1 O" y
  6. $data = $con->getAll($sql);2 L& ~* x5 m1 g9 g4 C, k( G
  7. //print_r($data);
复制代码
数据库操作我用的是pear类库。
! U- k5 i0 k% r4 v5 K最后的$data的数据格式如下:# r8 z5 B# B) D( L. E; Q$ P3 C
  1. Array
    . l. m+ c/ }7 _( A* G  s4 x
  2. (
    4 [; _) a4 o* n/ e3 {% F
  3.    [0] => Array) Y% E+ X0 }; J3 w
  4.        (
    / E; |- K! I  t
  5.            [cate_Id] => 4
    6 q& K& h6 n  k. l
  6.            [cate_ParentId] => 0
    . R6 i& m% j! T7 l; s' E
  7.            [cate_Name] => 往事如风/ b% ~5 V. J7 C8 ^) I" C0 i4 X
  8.            [cate_Intro] => 记录往事5 g" ?- w  P: q0 i: k
  9.            [cate_Order] => 0
    % V2 Q. N2 z. Q- y% M5 Y+ Z  \
  10.            [cate_Icon] => icons/6.gif. @  K( i+ ?: X7 p4 W
  11.        ). z1 k/ C1 e# R
  12.    [1] => Array! {0 i. D& T; r8 R5 t( k
  13.        (4 e3 L% b' v2 ^) C, x
  14.            [cate_Id] => 5" z+ _2 q3 p, z/ C! U) p
  15.            [cate_ParentId] => 0- V6 A- I* v. M# Z/ O6 K& @
  16.            [cate_Name] => 水煮三国- S$ o3 p" E( X8 @
  17.            [cate_Intro] => 品位三国智慧
    0 p/ f* e4 u' p+ ]
  18.            [cate_Order] => 0; [6 b; q' P9 B/ q
  19.            [cate_Icon] => icons/3.gif$ w+ w7 J! ~8 t0 K
  20.        )
复制代码
三.把上一步的数据转为树型状的数组- |+ n6 v& O& k0 R, X4 g
代码如下:( i, g$ p* v! j, w, n8 Q
  1. function getTree($data, $pId)
    ; m! J/ M4 j+ c% A! [7 p
  2. {& N+ }# @6 L! q! F- {, Q
  3. $tree = '';
    1 O' B# I+ [+ u8 r. g
  4. foreach($data as $k => $v)
    9 e: Z+ X" g# c
  5. {
    0 I" g) ]5 O' W: p. }
  6.   if($v['cate_ParentId'] == $pId)
    5 p! S# e1 e& P3 d1 Z- q  u5 l9 W
  7.   {        //父亲找到儿子
    $ g3 \+ h+ t' C7 |9 I* p& E0 k
  8.    $v['cate_ParentId'] = getTree($data, $v['cate_Id']);
    9 z% _' b0 }& ~. o0 }! {1 J
  9.    $tree[] = $v;
    # z4 x7 n4 \! y" W% {4 t
  10.    //unset($data[$k]);# i( k$ \/ k) b4 v, S1 {3 H: i1 A
  11.   }  J. f' K: i( d! `; O* l1 j- O8 _
  12. }
    & [# L1 Q" H5 K/ w& ~) r- a* w3 d$ B
  13. return $tree;
    9 j3 r# I% {5 S1 {
  14. }3 `7 V/ w1 \2 ?* ]
  15. $tree = getTree($data, 0);
复制代码
最后输出$tree的数据格式为:+ d. B7 @% \+ F4 c$ q! j3 Q( e
  1. Array
    1 l) {# E" o* @: A
  2. (
    - u- T% @/ r! _  K8 F: a, z
  3.    [0] => Array
    ) D7 A, W$ G/ o4 `5 |* n7 l) y
  4.        (. t6 A0 X/ {" Q
  5.            [cate_Id] => 4
    $ t, o2 O3 [" m6 M' p+ o* ^
  6.            [cate_ParentId] =>9 a# P2 w& w# W5 c# R* @
  7.            [cate_Name] => 往事如风6 T7 d* P4 m, X
  8.            [cate_Intro] => 记录往事
    2 l8 X' O+ |2 X; m) r! l0 T% H6 G
  9.            [cate_Order] => 06 z" B) h6 K9 O7 `" Z# }$ G* U
  10.            [cate_Icon] => icons/6.gif& q% M; `* r" l$ _3 F8 e5 x- G1 U
  11.        )/ k' T( Z: C! _6 c% e5 u6 v
  12.    [1] => Array6 s+ H& H5 X" S4 C3 A" I
  13.        (7 t" `3 V' O! l- V+ L
  14.            [cate_Id] => 57 k# ]- P5 t1 L2 z) d: K8 n
  15.            [cate_ParentId] =># ?# A8 `/ X6 m( y
  16.            [cate_Name] => 水煮三国
    ; T' G' N) Y& }+ |8 N
  17.            [cate_Intro] => 品位三国智慧
    3 p* _/ {+ j; s4 b$ J/ c  f
  18.            [cate_Order] => 04 X# m7 `( ?( C  l
  19.            [cate_Icon] => icons/3.gif) _$ t  w( y9 S, B# u5 v8 U9 B6 H2 K
  20.        )
    $ |/ P2 P1 h4 o+ [6 Z; x$ A
  21.    [2] => Array
    3 e" b$ O, H  k# u: T1 C
  22.        (. N* g" Z6 P3 T2 E/ ^2 x4 i
  23.            [cate_Id] => 2
    . S# B2 n/ u1 @, r9 ?
  24.            [cate_ParentId] => Array0 Z0 K& m  C7 C
  25.                (
    + C& h# P$ i' `1 M  c/ R
  26.                    [0] => Array
    : x$ K. u" h/ e! Q. i
  27.                        (' k; k. t) Z! _/ O5 J. n
  28.                            [cate_Id] => 8
    " `: o. y5 `* n8 l2 R4 l; k
  29.                            [cate_ParentId] =>, Y8 @- t$ n- }  A
  30.                            [cate_Name] => html
      O2 V' b0 H& m" e; w5 {+ {) n% ?
  31.                            [cate_Intro] => html学习( [1 L3 s8 j- u  n/ t  Z9 o. c6 W2 ?
  32.                            [cate_Order] => 0
      B- z: L' t$ k8 h
  33.                            [cate_Icon] => icons/1.gif  S) y8 L' a- `$ s) _
  34.                        )
复制代码
四.把树型状数组转为html
3 W$ j7 W3 O+ j" a; S8 x代码如下:
0 N$ w+ j& I2 L: Q) O
  1. function procHtml($tree), {* O) C/ S2 T4 z6 f; j
  2. {- \! d$ J3 U' e# R& {. U7 g
  3. $html = '';" y* T6 m/ b; S9 x  Z* ?
  4. foreach($tree as $t)( y/ |4 m/ ^% r! Q
  5. {* ^- @9 H  ^% a. t! ^( I' P
  6.   if($t['cate_ParentId'] == '')
    ! \  J2 e5 U0 h0 C+ w) t
  7.   {$ @' K+ W7 b: q" @- C% B2 o
  8.    $html .= "<li>{$t['cate_Name']}</li>";
    2 V) S# x" K5 T1 q0 G# E
  9.   }
    % [' C) g; m1 k
  10.   else
    + |, x  w3 E, z! x4 g# I
  11.   {
    5 A6 O7 z2 [* c; ?7 G
  12.    $html .= "<li>".$t['cate_Name'];
    9 D0 T" d2 T0 f& K: n4 y
  13.    $html .= procHtml($t['cate_ParentId']);
    ) e& e7 j0 D2 M
  14.    $html = $html."</li>";
    . R0 a1 E& z- N+ G7 }! I' |
  15.   }
    9 o$ F& |" D- s( H3 B9 q
  16. }
    + ~! s  F. [9 }* p; R
  17. return $html ? '<ul>'.$html.'</ul>' : $html ;
    ) T* @8 [6 y* m. L( F6 c$ ^2 Y. Y
  18. }% W* B. f7 L- z" y9 x$ @
  19. echo procHtml($tree);
复制代码
输出的html的代码格式为:
8 Z0 M  {, @8 V) |: r" A' e
  1. <ul>0 F1 c( {4 A1 X+ ?: K. C
  2. <li>往事如风</li>
    $ e& u8 s; \& t3 C: j" N
  3. <li>水煮三国</li>
    ! O6 [/ K6 W5 {5 y
  4. <li>技术学习
    # B# W8 S$ ]2 p: C4 D7 }- w# l, |! d
  5.   <ul>1 ]2 N. N. R! g9 H8 |6 y. l' w4 k
  6.    <li>html</li>
    + G+ E) b# O' x0 f
  7.    <li>css</li># A* i/ d! g* m1 a; S3 p% F
  8.    <li>php
    8 v9 ~/ ~3 P: r1 X4 U
  9.     <ul>
    ! J0 E* t9 q* E5 u; l1 D: W
  10.      <li>php基础知识</li>/ k7 m" `7 \6 E% R' V, i& ^
  11.      <li>oop</li>! W1 f) u3 Y3 E
  12.      <li>php安全</li>
复制代码
五.代码整合8 K6 }2 s- V0 F6 X6 V+ b" U
  1. function getTree($data, $pId)3 g4 b2 R) m( ?& A( k+ N8 k( l
  2. {8 F; d% y- D0 y: J$ g0 c' {
  3. $html = '';2 }: b  }8 @! M& ]! a
  4. foreach($data as $k => $v)7 Z% R# U+ ]9 u+ t% h# c
  5. {/ [0 l5 K  v7 z: E7 `
  6.   if($v['cate_ParentId'] == $pId)
    - |% C, c8 [' K7 d9 |2 u& G% o( k
  7.   {        //父亲找到儿子6 c% P5 t: s" ^) n+ v
  8.    $html .= "<li>".$v['cate_Name'];
    4 `( ]3 J0 }% g4 U2 ^+ @
  9.    $html .= getTree($data, $v['cate_Id']);7 E; h( Z! f4 x: S
  10.    $html = $html."</li>";! f+ M. r2 S4 D5 M, B
  11.   }
    / u( Y0 c8 u3 v/ l1 H
  12. }, I" [2 [# L+ @8 b" C
  13. return $html ? '<ul>'.$html.'</ul>' : $html ;# Y% m8 z6 Y- T2 ?8 R* J) l
  14. }
    ; T6 X, n- E' h, Y. Q4 e+ Q. m' j
  15. echo getTree($data, 0);
复制代码
六.增加CSS样式
/ v( g, J1 D4 f3 ^2 s7 t
) I' e* C5 j5 R& x
/ e$ T# W* o' `: a8 v第二种是从开源网站上看到的,非常非常的简介。
" @# Y: e' z. X* y3 p
  1. <?php9 z( ]; J, x* [
  2.   
    ( p8 Y2 ?' D2 a. q8 J. \5 g* W
  3. function genTree5($items) { 4 P# a) t) m8 c8 b6 Q
  4.     foreach ($items as $item) ' K( j5 _) R5 Z( V2 c8 l
  5.         $items[$item['pid']]['son'][$item['id']] = &$items[$item['id']];
    ! L1 b" ~; `  U! \3 {+ i
  6.     return isset($items[0]['son']) ? $items[0]['son'] : array(); - Q5 Q# {# p1 ~- r8 l% A8 F8 @
  7. } 6 F7 C5 P5 k1 q7 B' G: `
  8.   
    # F. c7 _* m% ?2 x! O, D
  9. /**: h8 [4 ^' F  ^" x
  10. * 将数据格式化成树形结构
    - k+ ~  [9 L5 z& T1 D6 S3 M
  11. * @author Xuefen.Tong2 k9 `8 G! T2 ]; t
  12. * @param array $items+ r  w8 w# {% A9 K) b7 i
  13. * @return array & L% b, F7 q+ m/ R0 o" O
  14. */
    / J3 E+ y1 }- L6 o
  15. function genTree9($items) {: Y7 A. w" u3 T- }7 d! F
  16.     $tree = array(); //格式化好的树8 ~" y7 q/ S( O* {4 C+ t
  17.     foreach ($items as $item)( g! n, [' N' h' o/ _4 |& [
  18.         if (isset($items[$item['pid']])). e7 o2 M$ N$ c; _9 p
  19.             $items[$item['pid']]['son'][] = &$items[$item['id']];
      w+ ]; I. n/ {
  20.         else
    4 |% @# G6 k: G4 }' u& }! A& U- O
  21.             $tree[] = &$items[$item['id']];
    4 _4 A7 U0 v" y* \% }9 h& b- p
  22.     return $tree;$ `, p7 F* B' ^& ~& {
  23. }3 ^4 e) }6 V* Q0 L" y
  24.   
    4 b' G8 I$ {7 v8 v, E1 {
  25. $items = array(
    / d; H5 @; ?/ n5 ?
  26.     1 => array('id' => 1, 'pid' => 0, 'name' => '江西省'),
    : D9 y! |' @* O6 |0 i7 B
  27.     2 => array('id' => 2, 'pid' => 0, 'name' => '黑龙江省'),2 @7 ^7 q6 A) W% Y
  28.     3 => array('id' => 3, 'pid' => 1, 'name' => '南昌市'),
    2 m8 [  Q  u% i( h' _7 S6 i5 H* Q" m
  29.     4 => array('id' => 4, 'pid' => 2, 'name' => '哈尔滨市'),7 _& T6 _. A! b6 h$ k7 P' [
  30.     5 => array('id' => 5, 'pid' => 2, 'name' => '鸡西市'),+ ~9 y) Z. U6 e% B3 A- n
  31.     6 => array('id' => 6, 'pid' => 4, 'name' => '香坊区'),
    9 x) n: c- [- a
  32.     7 => array('id' => 7, 'pid' => 4, 'name' => '南岗区'),
    + x1 M0 q- Z# Z8 x$ W4 n0 l% \
  33.     8 => array('id' => 8, 'pid' => 6, 'name' => '和兴路'),
    * N) F- h+ B4 |8 U
  34.     9 => array('id' => 9, 'pid' => 7, 'name' => '西大直街'),& J9 Q* u% _. F8 q6 K
  35.     10 => array('id' => 10, 'pid' => 8, 'name' => '东北林业大学'),
    5 J: j$ @( ]0 T0 a% o# c
  36.     11 => array('id' => 11, 'pid' => 9, 'name' => '哈尔滨工业大学'),
    1 X7 F3 [; @0 P+ T
  37.     12 => array('id' => 12, 'pid' => 8, 'name' => '哈尔滨师范大学'),' m% R* N) l' e3 t
  38.     13 => array('id' => 13, 'pid' => 1, 'name' => '赣州市'),
    , C$ Q- A$ b1 U4 _
  39.     14 => array('id' => 14, 'pid' => 13, 'name' => '赣县'),: w0 \, P' \' f; g4 ~
  40.     15 => array('id' => 15, 'pid' => 13, 'name' => '于都县'),9 M7 B4 M4 Y: E, G- [9 \8 I
  41.     16 => array('id' => 16, 'pid' => 14, 'name' => '茅店镇'),
    8 y  b2 ^6 l9 G. ]# I# s, H! {& d+ m
  42.     17 => array('id' => 17, 'pid' => 14, 'name' => '大田乡'),
      p! i" u6 g( F0 l; \* k
  43.     18 => array('id' => 18, 'pid' => 16, 'name' => '义源村'),
    " x, `  K; H# M. j% u' Z' H3 c
  44.     19 => array('id' => 19, 'pid' => 16, 'name' => '上坝村'),1 d+ B' L7 f6 c. v) ?) U3 C
  45. );5 w+ M7 x% |% M( Q0 z
  46. echo "<pre>";
    & f+ ~' A& s! u7 i, `+ l
  47. print_r(genTree5($items));. x/ W* y/ E) m0 C
  48. print_r(genTree9($items));
    - |, G/ P& C9 U1 T
  49.   
    / Q" Z% `; u( Z& k! L$ n
  50. //后者输出格式,前者类似,只是数组键值不一样,不过不影响数据结构
    ; D( [. K+ F4 K, l# ?$ c# `% c
  51. /*: a  i. v* f; o4 \5 Z3 m8 _6 K1 v- O
  52. Array
    " H; Z( X1 u6 [1 r" e. j# ~* r
  53. (
    2 J6 M/ b2 }7 R, w
  54. [0] => Array
    * P9 ^' U4 }) A( }$ b
  55.     (+ X0 D( n( Y( }
  56.         [id] => 1- f( N% R4 I+ R+ V5 i! ?" ^" M
  57.         [pid] => 0- n$ q9 c# d& `2 Z, b0 O
  58.         [name] => 江西省
    # m5 J5 J, N  b" l; ^
  59.         [son] => Array* s! ^+ z6 y+ r4 [4 n
  60.             (
    9 F$ N" E. M0 M7 ^6 u4 h: W0 ]: q
  61.                 [0] => Array
    - u. p! P2 X% `2 L5 c) v
  62.                     (# x/ n4 q- `/ y- Z# J! T' }' m
  63.                         [id] => 31 {) @1 ]5 F, j2 o- K' m
  64.                         [pid] => 1
    2 G; i& O1 ]! a
  65.                         [name] => 南昌市
    , h2 ?! y) O8 Z$ R6 u' a0 j$ h; d6 P2 _# j
  66.                     )
    2 t  e, a; ?& K1 V7 t! }% e
  67.   
    4 D) @. A0 y% s: d
  68.                 [1] => Array" q/ w4 G$ C  d7 ~- x- X
  69.                     (
    5 P0 G5 Q( H" o/ G0 b, V( K
  70.                         [id] => 13. c3 u& J4 z+ }( U, o( W) @! o
  71.                         [pid] => 1
    6 S. o" O9 h6 \8 a0 U
  72.                         [name] => 赣州市( T: T) W% k8 E
  73.                         [son] => Array+ y6 @1 J9 ]: e" m$ t
  74.                             (
    / b3 w3 s) P* s( J% w0 O
  75.                                 [0] => Array
    0 t% N9 P; C5 v, W4 j" L& x. s
  76.                                     (
    + _- D$ t- \( I" N3 V
  77.                                         [id] => 14
    9 j7 a8 y3 W+ ?) [3 r0 g- e. j- I
  78.                                         [pid] => 13+ ?& j% y2 q8 d; f# D& R; M( |* `0 q
  79.                                         [name] => 赣县
    " f8 S9 A' q/ o9 @8 E7 T5 F
  80.                                         [son] => Array  G5 C9 p  k5 }+ L! s3 Y) Q" n
  81.                                             (0 p4 G6 O: [) Q2 O. ^0 q
  82.                                             [0] => Array
    # u7 X' K0 _  D- k) n) o# L
  83.                                                 (
    , V" H7 H2 a( z5 H! p4 E# x$ e" O
  84.                                                     [id] => 16; ?9 |/ V6 D+ D6 r& l# L
  85.                                                     [pid] => 14
    $ p+ T6 c- `2 @. Q
  86.                                                     [name] => 茅店镇' Z3 k! [* p7 z1 K! ]4 L4 r
  87.                                                     [son] => Array
    $ E  J: p% v& c9 W" [* z
  88.                                                         (0 W; y2 F. }+ z3 ^8 a
  89.                                                         [0] => Array
    0 A& U. y& j* W! p2 S
  90.                                                             (
    5 B$ c: `. ~' D* A
  91.                                                             [id] => 18- @: K! z$ ^" b( W2 V* y
  92.                                                             [pid] => 16
      {3 i( E( c7 X% {
  93.                                                             [name] => 义源村
    ; ?9 f% {+ _9 B
  94.                                                             )
    2 Y3 l1 c' C$ c) v$ d7 Q$ N% y( h* C
  95.   
    7 a- W9 B0 n6 \' A; a/ N; j; B
  96.                                                         [1] => Array
    " [9 g1 Q* K* K( ?+ w2 d: c
  97.                                                             (
    1 [( k, S  \8 r1 a5 X+ ]  T
  98.                                                             [id] => 19
    ( t5 |0 U! w$ q0 m. @  P" q. V
  99.                                                             [pid] => 16
    . T; L( @# M8 h- C6 E
  100.                                                             [name] => 上坝村+ b, c, z$ l: Y' a8 K; |
  101.                                                             )
    % i) X7 K/ s- P8 y2 t6 s/ S& h
  102.   
      j; D" W# ]* g) }2 _- f% R
  103.                                                         )% @4 t0 h: @$ c
  104.   
    7 m( @" J1 N( m' p0 ~2 q8 x  t
  105.                                                 )
      t$ ?% J% Q/ C  G% ^2 f; v
  106.   / `% Z( t# N8 D: `8 B
  107.                                             [1] => Array
    , V8 R+ L% K( ?8 F, F1 r& O
  108.                                                 (% d2 U+ t  ]/ t% e" f
  109.                                                     [id] => 17
    # p! {/ `- W% @2 Y
  110.                                                     [pid] => 14
    9 i$ {0 N/ y" V3 o
  111.                                                     [name] => 大田乡/ `( Y! g- H+ d2 q# X, f& R
  112.                                                 )
    ' f$ b& F& g- C7 n( x& S- U* \8 D
  113.   # i" E' a( e- h$ T5 Q
  114.                                             )
    ' J3 E4 E8 X; u  A: q  j/ x
  115.   ( [3 e+ P: a9 Q; L4 y9 r* s. F: W
  116.                                     )
    ! A: v0 u" u  u6 I8 Q
  117.   
    $ W1 A$ j8 w; M& Z+ t3 m  e
  118.                                 [1] => Array; f- H) c# j- t/ m3 I* C! ]
  119.                                     (' ?% \! O1 ]( ]$ Z9 w
  120.                                         [id] => 15$ O2 I5 D- a8 D
  121.                                         [pid] => 13
    ! t7 z$ @  l" X1 n6 u" b0 e1 Q
  122.                                         [name] => 于都县
    , X, X4 C- S% B: t3 L2 B0 O
  123.                                     )
    - m5 d- U) w% O: ?
  124.   + k4 [' h) `/ g* U1 B
  125.                             ). _8 G$ \' O: M2 m7 I
  126.   
    2 m! f' M6 P. V/ J( k
  127.                     )
    ' o, ]$ w( N# d2 m: Z  c* y  d2 E
  128.   . F2 E; q) \: B7 _$ ~9 @
  129.             )
    # U4 a+ Y4 k* `+ a9 v
  130.   5 `. r: y/ }; R% r
  131.     )
    6 }; g0 \7 w) P9 Z: P' }" H& U
  132.   2 M2 F! V3 M- C5 h  J
  133. [1] => Array
    $ F3 @, V0 o1 R% M- F* d2 T3 M
  134.     (
    0 V" j# ^, ]( I: m3 r) i9 M
  135.         [id] => 2
    ( C4 B4 ?: z- |; ]+ p! r" {; T
  136.         [pid] => 0; b+ F9 ?$ `. A# x2 a" C
  137.         [name] => 黑龙江省
    2 p. p# i8 ?# x- Z
  138.         [son] => Array
    7 ~) |' K% O4 U% }0 G( K, x
  139.             (
    $ U9 C; e. ~3 T# z
  140.                 [0] => Array+ ~9 ?: K$ ?+ P; c7 ^9 J1 K% C
  141.                     (6 E: m; {% B  J; V4 S$ m/ n) S  t/ {
  142.                         [id] => 4
    ; F; i4 {3 q* q
  143.                         [pid] => 2
    # y6 h- l* q0 ^8 B3 b6 @4 {+ X+ |
  144.                         [name] => 哈尔滨市
    $ m4 N1 M9 y: B7 Q1 d- M
  145.                         [son] => Array! T3 y) C! |: x# h1 ~% q
  146.                             (. }4 g4 H* o! _/ f' c9 ?9 M
  147.                             [0] => Array
    6 h; O/ R' }) |* O
  148.                                 (
    + r8 Q$ j* b5 d2 [3 w3 m% ~) v
  149.                                     [id] => 6
    8 K5 {% V' F2 B6 A
  150.                                     [pid] => 4! \' B- c* `* v7 i3 B6 d
  151.                                     [name] => 香坊区; ~. V- |7 K: l8 V; l( S. f
  152.                                     [son] => Array
      j- v: h# J* d3 M, l& Z  I; L
  153.                                         (
    $ }' F4 Z0 t% b
  154.                                         [0] => Array
    5 p  D6 O5 b0 \- b+ u
  155.                                             (1 R6 V1 B- }8 a4 W
  156.                                                 [id] => 8  H: s+ n: {3 e$ _" N, U
  157.                                                 [pid] => 6, h: J! k* \: q5 f$ E# U
  158.                                                 [name] => 和兴路
    7 k: ?5 v5 n& B. y
  159.                                                 [son] => Array
    7 |5 u) A" w/ T3 V2 g  r4 Y
  160.                                                     (7 m- B" l% M8 ^
  161.                                                         [0] => Array
    % `$ p6 t4 b, `; D
  162.                                                             (6 v% R) G: x; S5 T- K% r
  163.                                                             [id] => 10
    + ?* Y( F( c! {/ T1 m: {
  164.                                                             [pid] => 86 j% y  Q, s6 p* w8 w# K! `7 l) ?
  165.                                                             [name] =>
    8 k) m% C7 q+ Y5 g2 b
  166.                                                              东北林业大学
    ) k- S% n; D7 x+ \# `+ c
  167.                                                             ): m8 D' C7 Z) R
  168.   
    # H6 D( X1 m- Z' n! _
  169.                                                         [1] => Array1 D8 [! `7 P9 p" D/ Q; |% Z, e
  170.                                                             (
      I$ ]- y# _  `4 H2 P% `% h
  171.                                                             [id] => 12
    * l" R9 C; E% k
  172.                                                             [pid] => 8+ W- n6 ]+ s- \
  173.                                                             [name] => / B/ N& L! T' |8 Q2 N* B2 d. F
  174.                                                             哈尔滨师范大学
    ( `1 b: c' ?" V3 L' r/ N6 _5 [
  175.                                                             )4 \* H+ f  g- ~) j/ X: I( M1 ^( X$ c
  176.   ' z, N: Q+ ]4 @& b) I3 F  g
  177.                                                     )# R9 Q; _' p$ q6 |1 Y. r; V4 Y" E
  178.   
    3 E% p$ O# [$ O! N0 _5 m+ P
  179.                                             )
    3 H2 y; J* X5 `! A) }
  180.   ' I6 b) f" q8 w: I8 u
  181.                                         )$ @; u: p  Z- k. v, b3 s3 F* p& E
  182.   & y' K/ Z! y( e5 D2 s
  183.                                 )
    3 C* x5 `9 z& h2 M; `8 [) c% W6 Q! C
  184.   . I6 y$ L5 ?2 m
  185.                             [1] => Array5 F/ b# S$ X, K) n  t6 ^  V
  186.                                 (
    4 ]# E: x1 D& m' X3 k1 @" x
  187.                                     [id] => 7
    * H; _3 I) I6 o7 G
  188.                                     [pid] => 4
    . `  V: L3 D9 h& H. Y0 n) V
  189.                                     [name] => 南岗区" X: u1 \9 C; e
  190.                                     [son] => Array% B/ ~0 ~, j$ m
  191.                                         (
    7 C( e: `4 o; R8 A/ f. d
  192.                                         [0] => Array
    % f1 a5 _8 Z, Q
  193.                                             (2 ?8 W5 Y9 h7 s' {. U) I1 I
  194.                                             [id] => 9
    " M2 i, S* C) ^1 {
  195.                                             [pid] => 74 o3 O: W5 b0 ~0 o+ m/ u: l  j8 j
  196.                                             [name] => 西大直街
    2 k: L$ S2 F% Q( w4 \, C
  197.                                             [son] => Array
    # L& M; S* N" t1 o
  198.                                                 (
    1 A, B/ W5 [4 ?8 P0 z5 a
  199.                                                 [0] => Array
    ' c/ X0 H; e2 f) ^
  200.                                                     (
    * J- @1 I# C; ]! y) C; Z0 b2 G
  201.                                                     [id] => 115 g' c) ?4 y& K+ b% m! V2 {
  202.                                                     [pid] => 9. n5 A0 `" ]5 z) b5 P9 h* ]
  203.                                                     [name] =>
      k# o, U; D: E3 H+ ~
  204.                                                      哈尔滨工业大学& m' X: m/ T* q3 n8 `0 U
  205.                                                     )
    2 n$ l1 J9 X* `
  206.   ( ]9 h$ z  G' L4 u6 h4 I' R2 Q
  207.                                                 )
    ' N, c( [& Q) C0 r5 ]- a( r
  208.   
    & \7 Q; p) n" b: e# h
  209.                                             )
    # o4 e6 h1 V% _  p' _& L
  210.   
    1 `3 F% j# O) }0 O
  211.                                         )" L4 @% E- f5 W" T$ v" t$ @3 B
  212.     q. n  {& w  K# g7 l6 |
  213.                                 )! E! B5 |. R9 L0 \, \! {8 f
  214.   0 m* f. B9 R: i# g' }
  215.                             )
    0 i: E' G$ a8 S- B6 \
  216.     x6 k, G$ f) M. j% ~0 S
  217.                     )
    / T  Y& {4 ?1 z' D& ^
  218.   ( H; b1 X5 d0 R) d- O6 X5 ]$ Q
  219.                 [1] => Array
    3 x- ]5 V9 o1 s$ g  |
  220.                     (
    0 o& \, Q/ p9 Q$ x$ S0 `
  221.                         [id] => 5% G0 L+ m+ ^/ p6 H% H
  222.                         [pid] => 2
    * E1 q6 d/ Y7 g- C
  223.                         [name] => 鸡西市
    7 ~  h# S! _: V8 a, d8 |, C
  224.                     )( H1 ]+ L5 i$ Y! H. Z
  225.   
    * t1 y+ c: w# r4 M
  226.             )
    ) o0 U/ l4 x8 u, B1 I
  227.   
    " I+ l) c6 Q$ {2 o8 r: C
  228.     )- I- G7 Q: C1 D+ u- _) r
  229. )*/
复制代码
可以看出第二种代码只用了5行代码就实现了无限级的分类树,非常值得大家的借鉴和学习。/ [( H! {! s& N; {' h* [% C

! `. G5 h) E3 Z7 q( B" E7 L5 k3 D; B# V- H

; ], f, c, r7 R: f' G) `7 Q
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-5-8 23:35 , Processed in 0.136526 second(s), 25 queries .

Copyright © 2001-2024 Powered by cncml! X3.2. Theme By cncml!