首页 > 语言 > PHP > 正文

PHP递归遍历多维数组实现无限分类的方法

2024-09-04 11:46:44
字体:大 中 小
来源:转载
供稿:网友

本文实例讲述了PHP递归遍历多维数组实现无限分类的方法。分享给大家供大家参考,具体如下:

  1. <?php 
  2.  
  3.    //$data[]=array('id'=>1,'parentid'=>0,'name'=>'中国','img'=>'52091199'); 
  4.  
  5.    $data[]=array('id'=>1,'parentid'=>0,'name'=>'中国'); 
  6.  
  7.    $data[]=array('id'=>2,'parentid'=>0,'name'=>'美国'); 
  8.  
  9.    $data[]=array('id'=>3,'parentid'=>0,'name'=>'韩国'); 
  10.  
  11.    $data[]=array('id'=>4,'parentid'=>1,'name'=>'北京'); 
  12.  
  13.    $data[]=array('id'=>5,'parentid'=>1,'name'=>'上海'); 
  14.  
  15.    $data[]=array('id'=>6,'parentid'=>1,'name'=>'广西'); 
  16.  
  17.    $data[]=array('id'=>7,'parentid'=>6,'name'=>'桂林'); 
  18.  
  19.    $data[]=array('id'=>8,'parentid'=>6,'name'=>'南宁'); 
  20.  
  21.    $data[]=array('id'=>9,'parentid'=>6,'name'=>'柳州'); 
  22.  
  23.    $data[]=array('id'=>10,'parentid'=>2,'name'=>'纽约'); 
  24.  
  25.    $data[]=array('id'=>11,'parentid'=>2,'name'=>'华盛顿'); 
  26.  
  27.    $data[]=array('id'=>12,'parentid'=>3,'name'=>'首尔'); 
  28.  
  29.    $tree=build_tree($data,0); 
  30.  
  31.    //echo memory_get_usage(); 
  32.  
  33.    print_r($tree); 
  34.  
  35.  function findChild(&$arr,$id){ 
  36.  
  37.   $childs=array(); 
  38.  
  39.   foreach ($arr as $k => $v){ 
  40.  
  41.    if($v['parentid']== $id){ 
  42.  
  43.     $childs[]=$v; 
  44.  
  45.    } 
  46.  
  47.   } 
  48.  
  49.   return $childs; 
  50.  
  51.  } 
  52.  
  53.  function build_tree($rows,$root_id){ 
  54.  
  55.   $childs=findChild($rows,$root_id); 
  56.  
  57.   if(emptyempty($childs)){ 
  58.  
  59.    return null; 
  60.  
  61.   } 
  62.  
  63.  foreach ($childs as $k => $v){ 
  64.  
  65.   $rescurTree=build_tree($rows,$v['id']); 
  66. //Vevb.com 
  67.   if( null != $rescurTree){ 
  68.  
  69.   $childs[$k]['childs']=$rescurTree; 
  70.  
  71.   } 
  72.  
  73.  } 
  74.  
  75.   return $childs; 
  76.  
  77.  } 
  78.  
  79. ?> 

运行结果:

  1. Array 
  2.  
  3. ( 
  4.  
  5.  [0] => Array 
  6.  
  7.   ( 
  8.  
  9.    [id] => 1 
  10.  
  11.    [parentid] => 0 
  12.  
  13.    [name] => 中国 
  14.  
  15.    [childs] => Array 
  16.  
  17.     ( 
  18.  
  19.      [0] => Array 
  20.  
  21.       ( 
  22.  
  23.        [id] => 4 
  24.  
  25.        [parentid] => 1 
  26.  
  27.        [name] => 北京 
  28.  
  29.       ) 
  30.  
  31.      [1] => Array 
  32.  
  33.       ( 
  34.  
  35.        [id] => 5 
  36.  
  37.        [parentid] => 1 
  38.  
  39.        [name] => 上海 
  40.  
  41.       ) 
  42.  
  43.      [2] => Array 
  44.  
  45.       ( 
  46.  
  47.        [id] => 6 
  48.  
  49.        [parentid] => 1 
  50.  
  51.        [name] => 广西 
  52.  
  53.        [childs] => Array 
  54.  
  55.         ( 
  56.  
  57.          [0] => Array 
  58.  
  59.           ( 
  60.  
  61.            [id] => 7 
  62.  
  63.            [parentid] => 6 
  64.  
  65.            [name] => 桂林 
  66.  
  67.           ) 
  68.  
  69.          [1] => Array 
  70.  
  71.           ( 
  72.  
  73.            [id] => 8 
  74.  
  75.            [parentid] => 6 
  76.  
  77.            [name] => 南宁 
  78.  
  79.           ) 
  80.  
  81.          [2] => Array 
  82.  
  83.           ( 
  84.  
  85.            [id] => 9 
  86.  
  87.            [parentid] => 6 
  88.  
  89.            [name] => 柳州 
  90.  
  91.           ) 
  92.  
  93.         ) 
  94.  
  95.       ) 
  96.  
  97.     ) 
  98.  
  99.   ) 
  100.  
  101.  [1] => Array 
  102.  
  103.   ( 
  104.  
  105.    [id] => 2 
  106.  
  107.    [parentid] => 0 
  108.  
  109.    [name] => 美国 
  110.  
  111.    [childs] => Array 
  112.  
  113.     ( 
  114.  
  115.      [0] => Array 
  116.  
  117.       ( 
  118.  
  119.        [id] => 10 
  120.  
  121.        [parentid] => 2 
  122.  
  123.        [name] => 纽约 
  124.  
  125.       ) 
  126.  
  127.      [1] => Array 
  128.  
  129.       ( 
  130.  
  131.        [id] => 11 
  132.  
  133.        [parentid] => 2 
  134.  
  135.        [name] => 华盛顿 
  136.  
  137.       ) 
  138.  
  139.     ) 
  140.  
  141.   ) 
  142.  
  143.  [2] => Array 
  144.  
  145.   ( 
  146.  
  147.    [id] => 3 
  148.  
  149.    [parentid] => 0 
  150.  
  151.    [name] => 韩国 
  152.  
  153.    [childs] => Array 
  154.  
  155.     ( 
  156.  
  157.      [0] => Array 
  158.  
  159.       ( 
  160.  
  161.        [id] => 12 
  162.  
  163.        [parentid] => 3 
  164.  
  165.        [name] => 首尔 
  166.  
  167.       ) 
  168.  
  169.     ) 
  170.  
  171.   ) 
  172.  
  173. ) 

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