PHP / HTML嵌套导航列表给出意外结果

时间:2011-03-23 14:56:55

标签: php html recursion navigation nested

我正在用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:有没有更好的方法来排序像我一样的大阵列?

感谢。现在回到调试

1 个答案:

答案 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>";
}

它应该能够满足您的需求,或者至少可以为您提供更接近您所寻找的东西。