【问题标题】:PHP/HTML Nested Navigation list giving unexpected resultsPHP/HTML 嵌套导航列表给出了意想不到的结果
【发布时间】:2011-07-21 09:35:09
【问题描述】:

我正在用 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:有没有更好的方法来对像我这样的大数组进行排序?

谢谢。现在返回调试

【问题讨论】:

    标签: php html recursion navigation nested


    【解决方案1】:

    你已经很接近了。您的错误在于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>";
    }
    

    它应该给你你正在寻找的东西,或者至少是更接近你正在寻找的东西。

    【讨论】:

    • 我听不懂你的意思,但我一直在想“一维数组”。然后我明白了。我的数组第三个元素应该是零或数组。由于布局,我的代码具有误导性。我为第三个元素列出了多个数组,但我没有将 /list of arrays/ 包含在它们自己的 array() 函数中!所以它应该看起来像 $element[0][2] = Array(Array($name, $url, 0), Array($name, $url, 0))。现在可以使用了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-19
    • 2017-01-05
    • 2021-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多