首页 > 开发 > PHP > 正文

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

2024-05-04 21:58:17
字体:大 中 小
来源:转载
供稿:网友

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表