1

我有一个充满“类别”对象的数组,每个对象都包含一个 id 和一个 parent_id 值。它们的访问方式如下:

$category->get("id"); //gets category id
$category->get("parent_id"); gets parent category id

我想制作一个这样的 HTML UL 列表:

<ul>
    <li>Category</li>
    <li>Category
        <ul>
            <li>Child Category</li>
            <li>Child Category</li>
            <li>Child Category
                <ul>
                    <li>Child Category</li>
                    <li>Child Category</li>
                    <li>Child Category</li>
                </ul>
            </li>
        </ul>
    </li>
    <li>Category</li>
    <li>Category</li>
    <li>Category</li>
    <li>Category</li>
</ul>

必须做什么样的循环来生成这个?

4

2 回答 2

0

在不知道您使用的是什么库的情况下,它更像是伪代码而不是工作代码,但您应该了解如何使用递归来获取树

首先检索主类别(例如,您可以将其设置为类别 0 是顶级类别。然后遍历所有项目并获取子项。如果节点有子项,则递归调用自身

showCategory($rootcategory) 
function showCategory($category) {
    $children=fetchChildren();
    if($children) //if category has children
    {
      echo('<ul>');
      foreach($children as $child) {
          showCategory($child);
      }
      echo('</ul>');
    }
    else {
      echo('<li>' . $child['title'] . '</li>');
    }
}
于 2013-03-06T03:20:07.357 回答
0

MPTT 树逻辑可能有用

http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/

于 2012-05-07T09:12:23.867 回答