欢迎来到源码交易网,为站长提供交易担保服务 访问移动版
站长交易首选担保平台!
酷客淘

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

日期: 2019-11-17 08:46:11 人气: -

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


<?php 

 

   //$data[]=array('id'=>1,'parentid'=>0,'name'=>'中国','img'=>'52091199'); 

 

   $data[]=array('id'=>1,'parentid'=>0,'name'=>'中国'); 

 

   $data[]=array('id'=>2,'parentid'=>0,'name'=>'美国'); 

 

   $data[]=array('id'=>3,'parentid'=>0,'name'=>'韩国'); 

 

   $data[]=array('id'=>4,'parentid'=>1,'name'=>'北京'); 

 

   $data[]=array('id'=>5,'parentid'=>1,'name'=>'上海'); 

 

   $data[]=array('id'=>6,'parentid'=>1,'name'=>'广西'); 

 

   $data[]=array('id'=>7,'parentid'=>6,'name'=>'桂林'); 

 

   $data[]=array('id'=>8,'parentid'=>6,'name'=>'南宁'); 

 

   $data[]=array('id'=>9,'parentid'=>6,'name'=>'柳州'); 

 

   $data[]=array('id'=>10,'parentid'=>2,'name'=>'纽约'); 

 

   $data[]=array('id'=>11,'parentid'=>2,'name'=>'华盛顿'); 

 

   $data[]=array('id'=>12,'parentid'=>3,'name'=>'首尔'); 

 

   $tree=build_tree($data,0); 

 

   //echo memory_get_usage(); 

 

   print_r($tree); 

 

 function findChild(&$arr,$id){ 

 

  $childs=array(); 

 

  foreach ($arr as $k => $v){ 

 

   if($v['parentid']== $id){ 

 

    $childs[]=$v; 

 

   } 

 

  } 

 

  return $childs; 

 

 } 

 

 function build_tree($rows,$root_id){ 

 

  $childs=findChild($rows,$root_id); 

 

  if(emptyempty($childs)){ 

 

   return null; 

 

  } 

 

 foreach ($childs as $k => $v){ 

 

  $rescurTree=build_tree($rows,$v['id']); 

//phpfensi.com 

  if( null != $rescurTree){ 

 

  $childs[$k]['childs']=$rescurTree; 

 

  } 

 

 } 

 

  return $childs; 

 

 } 

 

?> 

运行结果:


Array 

 

 

 [0] => Array 

 

  ( 

 

   [id] => 1 

 

   [parentid] => 0 

 

   [name] => 中国 

 

   [childs] => Array 

 

    ( 

 

     [0] => Array 

 

      ( 

 

       [id] => 4 

 

       [parentid] => 1 

 

       [name] => 北京 

 

      ) 

 

     [1] => Array 

 

      ( 

 

       [id] => 5 

 

       [parentid] => 1 

 

       [name] => 上海 

 

      ) 

 

     [2] => Array 

 

      ( 

 

       [id] => 6 

 

       [parentid] => 1 

 

       [name] => 广西 

 

       [childs] => Array 

 

        ( 

 

         [0] => Array 

 

          ( 

 

           [id] => 7 

 

           [parentid] => 6 

 

           [name] => 桂林 

 

          ) 

 

         [1] => Array 

 

          ( 

 

           [id] => 8 

 

           [parentid] => 6 

 

           [name] => 南宁 

 

          ) 

 

         [2] => Array 

 

          ( 

 

           [id] => 9 

 

           [parentid] => 6 

 

           [name] => 柳州 

 

          ) 

 

        ) 

 

      ) 

 

    ) 

 

  ) 

 

 [1] => Array 

 

  ( 

 

   [id] => 2 

 

   [parentid] => 0 

 

   [name] => 美国 

 

   [childs] => Array 

 

    ( 

 

     [0] => Array 

 

      ( 

 

       [id] => 10 

 

       [parentid] => 2 

 

       [name] => 纽约 

 

      ) 

 

     [1] => Array 

 

      ( 

 

       [id] => 11 

 

       [parentid] => 2 

 

       [name] => 华盛顿 

 

      ) 

 

    ) 

 

  ) 

 

 [2] => Array 

 

  ( 

 

   [id] => 3 

 

   [parentid] => 0 

 

   [name] => 韩国 

 

   [childs] => Array 

 

    ( 

 

     [0] => Array 

 

      ( 

 

       [id] => 12 

 

       [parentid] => 3 

 

       [name] => 首尔 

 

      ) 

 

    ) 

 

  )