ホームページ > バックエンド開発 > PHPチュートリアル > Infinitus 分類ツリー構造を作成する方法

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

小云云
リリース: 2023-03-20 10:08:01
オリジナル
1932 人が閲覧しました

この記事では主に、無限分類木構造を作成する簡単な方法を紹介します。編集者はこれが非常に良いものだと思ったので、皆さんの参考として今から共有します。編集者をフォローして見てみましょう。皆さんのお役に立てれば幸いです。

まずレンダリング

最上位の分類は実際には第一レベルの分類であり、これに基づいて、第二レベルの分類は第一レベルの分類のサブカテゴリとも呼ばれます。 -category にはサブカテゴリを含めることもできるため、Infinitus 分類が形成されます。

具体的な実装コードを見てみましょう:

1. コントローラーのフィールドごとにクエリを実行して、すべての分類情報をクエリします (id: カテゴリの ID 値、cate_name: カテゴリの名前、pid: 親 ID、ソート:タイトル順を表示するための準備としては、記述する必要はありません。)

public function cate_display()
  {
    $cate = D('Cate'); 
    $field = array('id','cate_name','pid','sorts');
    $list = $cate->allCategory($field);
    $this->assign('list',$list);
    $this->display();
  }
ログイン後にコピー

2. モデル内でコードを作成します

対応するコントローラーのモデル内に 2 つのメソッドを作成します

1. すべての分類情報をクエリし、メソッドを呼び出します。分類ツリーを生成するには:

public function allCategory($field='*'){
     $data = $this->field($field)->select();
     return $this->tree($data);
   }
ログイン後にコピー

2. 分類ツリーを生成します (再帰を使用し、データと 2 つの変数 pid [親クラス ID]、レベル [表示数の制御に使用されるレイヤーの数]、初期値はゼロです)

public function tree($data,$pid=0,$level=0){
    static $tree = array();
    foreach($data as $k=>$v){
      if($v['pid'] == $pid){
        $v['level'] = $level;
        $tree[]=$v;
        $this->tree($data,$v['id'],$level+1);
      }
    }
  
    return $tree;
  }
ログイン後にコピー

3 つ目、ビュー ファイル内のコード

<p class="form-group">
        <label for="pid" class="col-sm-2 control-label no-padding-right">上级菜单</label>
        <p class="col-sm-6">
          <select name="pid" style="width: 100%;">
            <option selected="selected" value="0">顶级菜单</option>
            <volist name="row" id="val"> 
              <option value="{$val.id}"><?php echo str_repeat(&#39;-&#39;,$val[&#39;level&#39;]*4); ?>{$val.cate_name}
              </option> 
            </volist> 
          </select>
        </p>
      </p>
ログイン後にコピー

このようにして、無限に再帰可能な分類ツリー構造が完成します。 要約: 中心となるアイデアは依然としてモデル内の再帰関数です。 pid は最初に渡され、デフォルトは 0 で、次に各再帰で渡されます。pid は上位レベルの ID であり、level は再帰レベルの数を記録するために使用されます。最後に、ビュー ページが表示されるときに、PHP が構築されます。 -in 関数 str_repeat() を呼び出して「-」を繰り返し出力し、出力中にレベルを区別する効果を実現します。

関連する推奨事項:

phpは再帰なしでInfinitus分類木を実装します

分類木を生成するためのInfinitus分類の実装方法の紹介

Infinitus分類木構造の簡単な紹介

以上がInfinitus 分類ツリー構造を作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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