PHP は多次元配列を再帰的に走査して無限の分類を実現します

高洛峰
リリース: 2023-03-04 19:18:02
オリジナル
1937 人が閲覧しました

この記事の例では、PHP が多次元配列を再帰的に走査して無限分類を実現する方法について説明します。参考のために皆さんと共有してください。詳細は次のとおりです:

<?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;
 }
?>
ログイン後にコピー

操作結果:

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] => 首尔
      )
    )
  )
)
ログイン後にコピー

この記事が PHP プログラミングの皆様のお役に立てれば幸いです。

PHP で多次元配列を再帰的に走査して無限分類を実現する方法に関するその他の関連記事については、PHP 中国語 Web サイトに注目してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート