我需要像树一样生成数组结构。
我想成为这样的人:
<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
。
请帮忙。
答案 0 :(得分:1)
请阅读this文章,我相信它会对您有所帮助。基本想法:
您需要一个节点类。
您需要在节点中存储他们的ID,类型(ul或li)和nazwa。
有两种类型的遍历树的算法:Depth-first和Width-first。您可以通过快速搜索找到数千篇描述这些算法的文章。此外,您还可以选择使用已创建的树木工具。
添加节点时,您知道其父节点的ID,因此您必须遍历树,直到找到节点的父节点。
完成树的创建后,通过使用深度优先树遍历并注意在适合关闭标记的位置关闭标记,可以非常轻松地创建输出字符串。
最后你将结果写在某个地方(你需要结果的地方)。