0

ツリーのような配列構造を生成する必要があります。私はこのような人を達成したいと思います:

<ul>
   <li>Catalog1
    <ul> 
        <li>Subcatalog1
            <ul> 
                <li> 
                    Subsubcatalog1
                </li> 
                <li> 
                    Subsubcatalog2
                </li> 
            </ul> 
        </li> 
        <li> 
            Item2
        </li> 
        <li> 
            Item3
        </li> 
    </ul> 
</li> 
<li> 
    Catalog2
</li>
</ul>

フィールドnadrzedny_idとpodrzedny_idを持つデータベースからのデータ配列があります。そして依存関係は、nadrzedny_id が podrzedny_id の親です。ルート要素の nadrzedny_id に null があり、id = 1 です。ツリーを閉じることはできません (多くのブランチを持つことができます)。

配列の各要素には次のものがあります
$element->id
$element->level (depth)
$element->podrzedny_id
$element->nadrzedny_id
$element->nazwa (name to display)
$element->id is always equal $element->podrzedny_id

助けてください。

4

1 に答える 1

1

この記事を読んでください。きっとあなたのお役に立ちます。基本的な考え方:

  1. ノード用のクラスが必要です。

  2. ID、タイプ (ul または li)、および nazwa をノードに格納する必要があります。

  3. ツリーをトラバースするアルゴリズムには、深さ優先と幅優先の 2 種類があります。クイック検索で、これらのアルゴリズムを説明している何千もの記事を見つけることができます。また、ツリー用に作成済みのツールを使用するオプションもあります。

  4. ノードを追加すると、その親の ID がわかるので、ノードの親が見つかるまでツリーをトラバースする必要があります。

  5. ツリーの作成が完了したら、深さ優先のツリー トラバースを使用し、タグを閉じるのに適切な場所でタグを閉じるように注意することで、出力文字列を作成するのは非常に簡単です。

  6. 最後に、結果をどこかに書き込みます (結果が必要な場所)。

于 2012-10-25T20:54:03.640 に答える