ホームページ  >  記事  >  バックエンド開発  >  PHPで無限分類木を実装する方法

PHPで無限分類木を実装する方法

墨辰丷
墨辰丷オリジナル
2018-05-18 10:09:071600ブラウズ

この記事では、主に PHP で Infinitus 分類ツリーを実装する方法を紹介します。Infinitus 分類の原理と実装方法を例の形式で簡単に分析し、PHP の配列トラバースと判断関連の操作スキルを必要とする友人が参照できるようにします。詳細は次のとおりです:

現在の分類データベースの設計は基本的に次のとおりです: 各分類には主キー ID フィールドがあり、pid は親クラスの ID を指します。このようにして、無限レベルの分類を実現できます。取得されたデータは次の形式です:

$arr = array(
  array("id" => 1 , "pid" => 0 , 'cat' => '栏目一'),
  array("id" => 2 , "pid" => 0 , 'cat' => '栏目二'),
  array("id" => 3 , "pid" => 1 , 'cat' => '栏目三'),
  array("id" => 4 , "pid" => 2 , 'cat' => '栏目四'),
  array("id" => 5 , "pid" => 1 , 'cat' => '栏目五'),
  array("id" => 6 , "pid" => 5 , 'cat' => '栏目六'),
  array("id" => 7 , "pid" => 5 , 'cat' => '栏目七'),
  array("id" => 8 , "pid" => 6 , 'cat' => '栏目八'),
  array("id" => 9 , "pid" => 1 , 'cat' => '栏目九'),
  array("id" => 10 , "pid" => 0 , 'cat' => '栏目十'),
  array("id" => 11 , "pid" => 10 , 'cat' => '栏目十一'),
  array("id" => 12 , "pid" => 11 , 'cat' => '栏目十二'),
  array("id" => 13 , "pid" => 2 , 'cat' => '栏目十三'),
  array("id" => 14, "pid" => 13 , 'cat' => '栏目十四')
);


あまり言うことはありません。処理コードに直接進みましょう:

//生成无限极分类树
function make_tree($arr){
  $refer = array();
  $tree = array();
  foreach($arr as $k => $v){
    $refer[$v['id']] = & $arr[$k]; //创建主键的数组引用
  }
  foreach($arr as $k => $v){
    $pid = $v['pid'];  //获取当前分类的父级id
    if($pid == 0){
      $tree[] = & $arr[$k];  //顶级栏目
    }else{
      if(isset($refer[$pid])){
        $refer[$pid]['subcat'][] = & $arr[$k]; //如果存在父级栏目,则添加进父级栏目的子栏目数组中
      }
    }
  }
  return $tree;
}


テスト実行:

実行結果:


$cat = make_tree($arr);
print_r($cat);

関連推奨事項:

無限分類ツリー構造を作成する方法

無限分類ツリーを実装するための再帰なしのphp

に無限分類木構造

以上がPHPで無限分類木を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。