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. 遍历树有两种类型的算法:深度优先和宽度优先。您可以通过快速搜索找到数千篇描述这些算法的文章。此外,您可以选择使用已创建的树木工具。

  4. 添加节点时,您知道其父节点的 id,因此您必须遍历树,直到找到节点的父节点。

  5. 创建完树后,很容易创建输出字符串,方法是使用深度优先树遍历并注意在适合关闭标签的位置关闭标签。

  6. 最后,您将结果写在某个地方(您需要结果的地方)。

于 2012-10-25T20:54:03.640 回答