我正在用PHP编写一个递归导航菜单,以便于组织和扩展。现在我正在使用暗黑破坏神II中的一些示例来使嵌套正常工作。
递归循环给了我一些奇怪的结果。有时它只返回一个字母而不是数组的名称/ url,并且它不会递归所有元素。
这有点难以解释,我的主要问题是我真的不明白如何调试它。这可能是我想不通的简单事。
为了节省每个人的时间,我创建了一个包含源代码的页面(突出显示语法)并在此处输出:
http://radleygh.com/files/test/example.php
这应该可以很容易地看到发生了什么。
列表的布局应如下所示(每个组的名称和UL包含在同一LI元素中):
ul
li
Parent Title #1
ul
li
Child Title #1
li
Child Title #2
/ul
li
Parent Title #2
/ul
PS:有没有更好的方法来排序像我一样的大阵列?
感谢。现在回到调试
答案 0 :(得分:0)
你非常接近。你的错误在于recurse_array
函数内。你传递的是单维数组的元素(我知道它在技术上是给定$element[2]
的多个维度,但前两个元素是单个:)),所以当它抓住它时,这些词要被分解成各自的数组。
试试这个:
function recurse_array($element) {
echo "<ul>\n";
echo " <li>"."<a href='{$element[1]}'>{$element[0]}</a>\n";
if (is_array($element[2])) {
echo recurse_array($element[2]);
}
echo " </li>\n";
echo "</ul>";
}
它应该能够满足您的需求,或者至少可以为您提供更接近您所寻找的东西。