Php Codeigniter递归菜单未显示子菜单?

Php Codeigniter递归菜单未显示子菜单?,php,codeigniter,recursion,Php,Codeigniter,Recursion,下面是分类表 我的模型 public function get_categories($parent_id = 0){ $query = $this->db->where('parent_id', $parent_id) ->order_by('cat_name', 'ASC') ->get('category'); $return = array();

下面是分类表

我的模型

public function get_categories($parent_id = 0){
    $query = $this->db->where('parent_id', $parent_id)
                      ->order_by('cat_name', 'ASC')
                      ->get('category');

    $return = array();

    foreach ($query->result() as $category){
        $return[$category->cat_id] = $category;
    }

    if($query->num_rows() > 0){
        foreach ($query->result() as $cat){
            $return[$cat->cat_id] = $cat;
        }
        return $return;
    }
    return $return;
}
我的看法

<div class="navbar-collapse collapse" id="navigation">
     <ul class="nav navbar-nav navbar-left">
        <li class="active">
           <a href="<?php echo base_url();?>member/home">Home</a>
        </li>
        <?php foreach ($categories as $row): ?>
        <li><a href="#"><?php echo $row->cat_name; ?></a></li>
            <ul class="dropdown-menu">
                <li><a href="#"><?php echo $row->cat_name; ?></a></li>
            </ul>
        <?php endforeach; ?>
     </ul>
 </div>


我想将diskpad显示为子级,因为不显示。我的错在哪里?请帮助我

您必须构建数据结构(老实说,您应该学习这段代码,因为您应该理解它)

使用以下代码修改您的模型:

public function get_categories()
{
    $query = $this->db->order_by('cat_name', 'ASC')->get('category');
    $arrData = $query->result();

    $arrTreeById = [];

    foreach($arrData AS $objItem)
    {
        $arrTreeById[$objItem->cat_id] = $objItem;
        $objItem->arrChilds = [];
    }

    $arrChildIds = [];

    foreach($arrTreeById AS $objItem)
    {
        if (isset($arrTreeById[$objItem->parent_id]))   
        {
            $arrTreeById[$objItem->parent_id]->arrChilds[] = $objItem;
            $arrChildIds[] = $objItem->cat_id;
        }
    }

    array_walk($arrChildIds, function($val) use (&$arrTreeById) {
        unset($arrTreeById[$val]);
    });

    return $arrTreeById;
}
你的看法呢

<div class="navbar-collapse collapse" id="navigation">
    <ul class="nav navbar-nav navbar-left">
        <li class="active">
            <a href="<?php echo base_url();?>member/home">Home</a>
        </li>
        <?php foreach ($categories as $row): ?>
        <li><a href="#"><?php echo $row->cat_name; ?></a>
        <?php
        if (count($row->arrChilds) > 0) :
        ?>
            <ul class="dropdown-menu">
            <?php
            foreach ($row->arrChilds as $row)   :
            ?>
                <li><a href="#"><?php echo $row->cat_name; ?></a></li>
            <?php
            endforeach;
            ?>
            </ul>
        <?php
        endif;
        ?>
        </li>
    <?php endforeach; ?>
    </ul>
</div>


您的问题不清楚。对不起,我不明白