0

データベースから多次元メニューを取得する関数を作成しました。

public function get_menu($parent=0,$vis=1) {
        $categories = array();
        $this->db->from('ci_categories');
        $this->db->where('cat_child',$parent);
        $this->db->where('cat_vis',1);
        $this->db->order_by('cat_order');
        $q = $this->db->get();

        $result = $q->result();

        $i=0;
        foreach($result as $mainCategory) {
            $mainCategory->cat_subcategories = $this->get_menu($mainCategory->cat_id);
            $categories[$i] = $mainCategory;
            $i++;
        }

        return $categories;
    }

動作していますが、メニューを印刷したいと思います。今のところ、次のコードでメイン メニューと 1 つの子を印刷できます。

if (count($menu) > 0) {
    foreach($menu as $menu_item) {
    $link = anchor("category/".$menu_item->cat_url, $menu_item->cat_name);

    echo "<li>$link";

    if (!empty($menu_item->cat_subcategories)) {
       echo "<ul>";
       foreach($menu_item->cat_subcategories as $subcat) {
         $sub_link = anchor("category/".$subcat->cat_url, $subcat->cat_name);
         echo "<li>$sub_link</li>";
    }
           echo "</ul>";
        }

    echo "</li>";
        }
    }

それも機能していますが、 foreach と ifs を手動で記述せずに、3番目または4番目のサブメニューを印刷するにはどうすればよいですか? ありがとう

4

1 に答える 1