当前位置:首页 > PHP教程 > php应用 > 列表

不用递归实现php树程序代码

发布:smiling 来源: PHP粉丝网  添加日期:2014-07-30 14:02:57 浏览: 评论:0 

本文章介绍了一段关于不用递归实现php树程序代码,实例代码如下:

  1. /** 
  2.  * 创建父节点树形数组 
  3.  * 参数 
  4.  * $ar 数组,邻接列表方式组织的数据 
  5.  * $id 数组中作为主键的下标或关联键名 
  6.  * $pid 数组中作为父键的下标或关联键名 
  7.  * 返回 多维数组 
  8.  **/ 
  9. function find_parent($ar$id='id'$pid='pid') { 
  10.   foreach($ar as $v$t[$v[$id]] = $v
  11.   foreach ($t as $k => $item){ 
  12.     if$item[$pid] ){ 
  13.       if( ! isset($t[$item[$pid]]['parent'][$item[$pid]]) ) 
  14.          $t[$item[$id]]['parent'][$item[$pid]] =& $t[$item[$pid]]; 
  15.     } 
  16.   } 
  17.   return $t
  18.  
  19.  
  20. /** 
  21.  * 创建子节点树形数组 
  22.  * 参数 
  23.  * $ar 数组,邻接列表方式组织的数据 
  24.  * $id 数组中作为主键的下标或关联键名 
  25.  * $pid 数组中作为父键的下标或关联键名 
  26.  * 返回 多维数组 
  27.  **/ 
  28. function find_child($ar$id='id'$pid='pid') { 
  29.   foreach($ar as $v$t[$v[$id]] = $v
  30.   foreach ($t as $k => $item){ 
  31.     if$item[$pid] ) { 
  32.       $t[$item[$pid]]['child'][$item[$id]] =& $t[$k]; 
  33.     } 
  34.   } 
  35.   return $t
  36.  
  37.     $data = array
  38.       array('ID'=>1, 'PARENT'=>0, 'NAME'=>'祖父'), 
  39.       array('ID'=>2, 'PARENT'=>1, 'NAME'=>'父亲'), 
  40.       array('ID'=>3, 'PARENT'=>1, 'NAME'=>'叔伯'), 
  41.       array('ID'=>4, 'PARENT'=>2, 'NAME'=>'自己'), 
  42.       array('ID'=>5, 'PARENT'=>4, 'NAME'=>'儿子'), 
  43.     ); 
  44.  
  45.     $p = find_parent($data'ID''PARENT'); 
  46.     $c = find_child($data'ID''PARENT'); 
  47.     Print_r ($c); 
  48. /*  
  49. 结果如下: 
  50. Array 
  51. ( 
  52.     [1] => Array 
  53.         ( 
  54.             [ID] => 1 
  55.             [PARENT] => 0 
  56.             [NAME] => 祖父 
  57.             [child] => Array 
  58.                 ( 
  59.                     [2] => Array 
  60.                         ( 
  61.                             [ID] => 2 
  62.                             [PARENT] => 1 
  63.                             [NAME] => 父亲 
  64.                             [child] => Array 
  65.                                 ( 
  66.                                     [4] => Array 
  67.                                         ( 
  68.                                             [ID] => 4 
  69.                                             [PARENT] => 2 
  70.                                             [NAME] => 自己 
  71.                                             [child] => Array 
  72.                                                 ( 
  73.                                                     [5] => Array 
  74.                                                         ( 
  75.                                                             [ID] => 5 
  76.                                                             [PARENT] => 4 
  77.                                                             [NAME] => 儿子 
  78.                                                         ) 
  79.  
  80.                                                 ) 
  81.  
  82.                                         ) 
  83.  
  84.                                 ) 
  85.  
  86.                         ) 
  87.  
  88.                     [3] => Array 
  89.                         ( 
  90.                             [ID] => 3 
  91.                             [PARENT] => 1 
  92.                             [NAME] => 叔伯 
  93.                         ) 
  94.  
  95.                 ) 
  96.  
  97.         ) 
  98.  
  99.     [2] => Array 
  100.         ( 
  101.             [ID] => 2 
  102.             [PARENT] => 1 
  103.             [NAME] => 父亲 
  104.             [child] => Array 
  105.                 ( 
  106.                     [4] => Array 
  107.                         ( 
  108.                             [ID] => 4 
  109.                             [PARENT] => 2 
  110.                             [NAME] => 自己 
  111.                             [child] => Array 
  112.                                 ( 
  113.                                     [5] => Array 
  114.                                         ( 
  115.                                             [ID] => 5 
  116.                                             [PARENT] => 4 
  117.                                             [NAME] => 儿子 
  118.                                         ) 
  119.  
  120.                                 ) 
  121.  
  122.                         ) 
  123.  
  124.                 ) 
  125.  
  126.         ) 
  127.  
  128.     [3] => Array 
  129.         ( 
  130.             [ID] => 3 
  131.             [PARENT] => 1 
  132.             [NAME] => 叔伯 
  133.         ) 
  134.  
  135.     [4] => Array 
  136.         ( 
  137.             [ID] => 4 
  138.             [PARENT] => 2 
  139.             [NAME] => 自己 
  140.             [child] => Array 
  141.                 ( 
  142.                     [5] => Array 
  143.                         ( 
  144.                             [ID] => 5 
  145.                             [PARENT] => 4 
  146.                             [NAME] => 儿子 
  147.                         ) 
  148.  
  149.                 ) 
  150.  
  151.         ) 
  152.  
  153.     [5] => Array 
  154.         ( 
  155.             [ID] => 5 
  156.             [PARENT] => 4 
  157.             [NAME] => 儿子 
  158.         ) 
  159.  
  160. ) 
  161. */ 

Tags: php递归 php树程序

分享到: