【发布时间】:2012-10-07 18:44:19
【问题描述】:
我在 PHP 中有一个数组,如下所示:
array (
[0] => array (
[id] => 1
[title] => "Title 1"
[parent_id] => NULL
[depth] => 0
)
[1] => array (
[id] => 2
[title] => "Title 2"
[parent_id] => NULL
[depth] => 0
)
[2] => array (
[id] => 3
[title] => "Title 3"
[parent_id] => 2
[depth] => 1
)
[3] => array (
[id] => 4
[title] => "Title 4"
[parent_id] => 2
[depth] => 1
)
[4] => array (
[id] => 5
[title] => "Title 5"
[parent_id] => NULL
[depth] => 0
)
[5] => array (
[id] => 6
[title] => "Title 6"
[parent_id] => 4
[depth] => 2
)
)
我想要做的是遍历这个数组并从中创建一个嵌套的<ol> 列表。所以结果应该是这样的:
<ol>
<li>Title 1</li> // id = 1
<li>Title 2</li> // id = 2
<ol>
<li>Title 3</li> // id = 3 -> parent_id = 2
<li>Title 4</li> // id = 4 -> parent_id = 2
<ol>
<li>Title 6</li> // id = 6 -> parent_id = 4
</ol>
</ol>
<li>Title 5</li> // id = 5
</ol>
我一直在想办法如何完成这项工作。但到目前为止,每一次尝试都失败了……
任何人知道如何从这样的数组创建这样一个嵌套的<ol> 列表吗?
请注意,我对给定数据没有任何控制权。我只是调用一个 API,它返回 json 数据,我将其转换为一个数组。这个数组看起来和我描述的一模一样。
【问题讨论】:
-
表面上看起来很简单,但我认为您仍然缺乏信息来获得适合您情况的最佳答案。首先,你是如何得到数组的?它来自数据库吗?是否有可能以不同的方式存储它,还是你被困在这种方式中?深度是否保证(现在或将来)不会超过 1 或 2,或者您是否计划进行不确定数量的子级别?添加或删除类别的频率如何?我建议您查看mikehillyer.com/articles/managing-hierarchical-data-in-mysql,因为嵌套模型可能更符合您的需求。