Maison >développement back-end >tutoriel php >PHP parcourt récursivement des tableaux multidimensionnels pour obtenir une classification infinie

PHP parcourt récursivement des tableaux multidimensionnels pour obtenir une classification infinie

高洛峰
高洛峰original
2017-01-14 11:50:071972parcourir

L'exemple de cet article décrit la méthode PHP traversant de manière récursive des tableaux multidimensionnels pour obtenir une classification infinie. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :

<?php
   //$data[]=array(&#39;id&#39;=>1,&#39;parentid&#39;=>0,&#39;name&#39;=>&#39;中国&#39;,&#39;img&#39;=>&#39;52091199&#39;);
   $data[]=array(&#39;id&#39;=>1,&#39;parentid&#39;=>0,&#39;name&#39;=>&#39;中国&#39;);
   $data[]=array(&#39;id&#39;=>2,&#39;parentid&#39;=>0,&#39;name&#39;=>&#39;美国&#39;);
   $data[]=array(&#39;id&#39;=>3,&#39;parentid&#39;=>0,&#39;name&#39;=>&#39;韩国&#39;);
   $data[]=array(&#39;id&#39;=>4,&#39;parentid&#39;=>1,&#39;name&#39;=>&#39;北京&#39;);
   $data[]=array(&#39;id&#39;=>5,&#39;parentid&#39;=>1,&#39;name&#39;=>&#39;上海&#39;);
   $data[]=array(&#39;id&#39;=>6,&#39;parentid&#39;=>1,&#39;name&#39;=>&#39;广西&#39;);
   $data[]=array(&#39;id&#39;=>7,&#39;parentid&#39;=>6,&#39;name&#39;=>&#39;桂林&#39;);
   $data[]=array(&#39;id&#39;=>8,&#39;parentid&#39;=>6,&#39;name&#39;=>&#39;南宁&#39;);
   $data[]=array(&#39;id&#39;=>9,&#39;parentid&#39;=>6,&#39;name&#39;=>&#39;柳州&#39;);
   $data[]=array(&#39;id&#39;=>10,&#39;parentid&#39;=>2,&#39;name&#39;=>&#39;纽约&#39;);
   $data[]=array(&#39;id&#39;=>11,&#39;parentid&#39;=>2,&#39;name&#39;=>&#39;华盛顿&#39;);
   $data[]=array(&#39;id&#39;=>12,&#39;parentid&#39;=>3,&#39;name&#39;=>&#39;首尔&#39;);
   $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[&#39;parentid&#39;]== $id){
    $childs[]=$v;
   }
  }
  return $childs;
 }
 function build_tree($rows,$root_id){
  $childs=findChild($rows,$root_id);
  if(empty($childs)){
   return null;
  }
 foreach ($childs as $k => $v){
  $rescurTree=build_tree($rows,$v[&#39;id&#39;]);
  if( null != $rescurTree){
  $childs[$k][&#39;childs&#39;]=$rescurTree;
  }
 }
  return $childs;
 }
?>

Résultats en cours d'exécution :

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] => 首尔
      )
    )
  )
)

J'espère que cet article sera utile à tout le monde dans la programmation PHP.

Pour plus d'articles sur la façon dont PHP traverse récursivement des tableaux multidimensionnels pour obtenir une classification infinie, veuillez faire attention au site Web chinois de PHP !

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn