Heim  >  Artikel  >  Backend-Entwicklung  >  PHP durchläuft rekursiv mehrdimensionale Arrays, um eine unendliche Klassifizierung zu erreichen

PHP durchläuft rekursiv mehrdimensionale Arrays, um eine unendliche Klassifizierung zu erreichen

高洛峰
高洛峰Original
2017-01-14 11:50:071890Durchsuche

Das Beispiel in diesem Artikel beschreibt die Methode, mit der PHP mehrdimensionale Arrays rekursiv durchläuft, um eine unendliche Klassifizierung zu erreichen. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:

<?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;
 }
?>

Laufergebnisse:

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

Ich hoffe, dieser Artikel wird für alle hilfreich sein, die sich mit PHP-Programmierung befassen.

Weitere verwandte Artikel darüber, wie PHP mehrdimensionale Arrays rekursiv durchläuft, um eine unendliche Klassifizierung zu erreichen, finden Sie auf der chinesischen PHP-Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn