PHP目录依赖项数组

时间:2012-10-25 17:08:26

标签: php data-structures multidimensional-array tree

我需要像树一样生成数组结构。 我想成为这样的人:

<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。 dependecy是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

请帮忙。

1 个答案:

答案 0 :(得分:1)

请阅读this文章,我相信它会对您有所帮助。基本想法:

  1. 您需要一个节点类。

  2. 您需要在节点中存储他们的ID,类型(ul或li)和nazwa。

  3. 有两种类型的遍历树的算法:Depth-first和Width-first。您可以通过快速搜索找到数千篇描述这些算法的文章。此外,您还可以选择使用已创建的树木工具。

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

  5. 完成树的创建后,通过使用深度优先树遍历并注意在适合关闭标记的位置关闭标记,可以非常轻松地创建输出字符串。

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