PHP Infinitus 分類の実装 (再帰を使用しない)、php recursion_PHP チュートリアル

WBOY
リリース: 2016-07-13 10:24:00
オリジナル
1281 人が閲覧しました

PHP Infinitus 分類の実装 (再帰なし)、PHP 再帰

Infinitus 分類は、部門構造、記事分類などの開発でよく使用されます。 Infinitus 分類の難しさは、

などの「出力」と「クエリ」にあります。
  • 記事分類を
      リスト形式に出力します;
    • カテゴリ A のすべてのカテゴリに含まれる記事を検索します。

    1.実施原則

    記事「無限分類の実装アイデア」では、いくつかの一般的な実装方法が紹介されており、それぞれに長所と短所があります。このうち、「改良されたプリオーダートラバーサルツリー」のデータ構造は、出力やクエリには便利ですが、モバイルの分類や一般的な理解においてはやや複雑です。

    2.データ構造

    id fid タイトル
    1 0 中国
    2 1 江蘇省
    3 1 安徽省
    4 8 江陰
    5 3 蕪湖
    6 3 合肥
    7 3 ベンブ
    8 2 無錫
    リーリー

    各カテゴリは親カテゴリ ID (すなわち fid) を介して「連結」され、分類ツリーを形成します。連結を実行するときに注意すべき点が 1 つあります。カテゴリ A の fid をそのサブカテゴリの ID にすることはできません。

    このデータ構造を出力に使用するときに最も一般的に使用されるアルゴリズムは「再帰」です。PHP 言語に精通している友人なら、PHP は再帰が苦手であり、再帰の回数が制限されていることを知っているはずです (状況に応じて約 100 回)。オペレーティング システムと構成)。

    すべての再帰はループを使用して実装できるため、この記事では、PHP 言語の特性に基づいて、再帰実装よりも効率的な「無限レベル」分類用の関数セットを作成しました

    3.ULリストフォームを出力します

    上記のデータを以下のHTMLとして出力します

    リーリー

    この HTML 構造は、フロントエンドで使用するのに非常に便利です (JavaScript と CSS を使用して折りたたみ可能なツリーを構築します)。具体的な実装手順は以下の通りです

    リーリー

    4. オプションリストフォームを出力します

    リーリー

    具体的な実装手順は以下の通りです。

    リーリー

    5. 特定のカテゴリのすべてのサブカテゴリを検索します

    リーリー

    6. 特定のカテゴリのすべての親カテゴリを検索します

    リーリー

    7.関連機能

    <code><?php
        $list = array(
            array('id'=>1, 'fid'=>0, 'title' => '中国'), 
            array('id'=>2, 'fid'=>1, 'title' => '江苏'),
            array('id'=>3, 'fid'=>1, 'title' => '安徽'),
            array('id'=>4, 'fid'=>8, 'title' => '江阴'),
            array('id'=>5, 'fid'=>3, 'title' => '芜湖'),
            array('id'=>6, 'fid'=>3, 'title' => '合肥'),
            array('id'=>7, 'fid'=>3, 'title' => '蚌埠'),
            array('id'=>8, 'fid'=>8, 'title' => '无锡')
        );
    ?></code>
    ログイン後にコピー

    phpの再帰問題(無限分類)

    Foreach 自体は、$arr 配列が空でない場合、子ノードを走査して再帰的にアクセスしますが、葉ノードの場合、$arr 配列は空であるため、この時点ではまったく foreach されません。直接返却されます。クリア?

    phpの再帰問題、Infinitus分類スタイルに従ってデータを表示したい

    最初に json を配列にデコードし、json_decode 関数を使用します。2 番目のパラメーターを追加する必要があることに注意してください。追加しないとオブジェクトが返されます。次のステップは再帰です。これは、1 つずつ実行するだけの最も単純な再帰です。
    以下は完全なコードです:
    $data= json_decode($str,true);$options = getChildren($data);function getChildren($parent,$deep=0) {foreach($parent as $row) { $ data[] = array("id"=>$row['id'], "name"=>$row['name'],"pid"=>$row['parentid'],' deep '=>$deep);if ($row['childs']) {$data = array_merge($data, getChildren($row['childs'], $deep+1));}}return $data ; }?>
    上記のコードはテストされており、レンダリングは次のようになります


    PHP Infinitus 分類の実装 (再帰を使用しない)、php recursion_PHP チュートリアル

    www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/831802.html技術記事 PHP Infinitus 分類の実装 (再帰を使用しない) PHP の再帰的 Infinitus 分類は、部門構造や記事分類などの開発でよく使用されます。 Infinitus 分類の難しさは出力と検索にあります...
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート