Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:从数组生成类别/子类别UL列表?_Php - Fatal编程技术网

PHP:从数组生成类别/子类别UL列表?

PHP:从数组生成类别/子类别UL列表?,php,Php,我有一个由“Category”对象填充的数组,每个对象都包含一个id和一个parent_id值。它们的访问方式如下: $category->get("id"); //gets category id $category->get("parent_id"); gets parent category id <ul> <li>Category</li> <li>Category <ul>

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

$category->get("id"); //gets category id
$category->get("parent_id"); gets parent category id
<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>
我想制作一个HTML UL列表,如下所示:

$category->get("id"); //gets category id
$category->get("parent_id"); gets parent category id
<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>
  • 类别
  • 类别
    • 子类别
    • 子类别
    • 子类别
      • 子类别
      • 子类别
      • 子类别
  • 类别
  • 类别
  • 类别
  • 类别

必须执行何种类型的循环才能生成此文件?

MPTT树逻辑可能会很有用


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

首先检索主类别(例如,您可以设置为类别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>');
    }
}
showCategory($rootcategory)
函数showCategory($category){
$children=fetchChildren();
if($children)//如果类别有子类
{
回声(“
    ”); foreach($childrenas$child){ 展示类别(儿童); } 回声(“
”); } 否则{ 回音(“
  • ”.$child['title'].
  • ”); } }
    “要生成这个循环,必须做什么样的循环?”---递归循环你试过用
    递归
    术语搜索吗?