为函数控制器中的foreach()codeigner3提供的参数无效


invalid argument supplied for foreach() codeigniter3 in function controller

对不起,伙计们,我想问的是,当我尝试了benerin,但仍然是这样的时候,为什么突然为foreach()CodeIgniter提供了无效的参数。。最初我想在CodeIgniter中制作一个嵌套。。这是我在控制器中的脚本示例

function load_menus() {
    $this->load->model("webadmin/we_model");
    $data["menus"] = $this->me($this->we_model->get_menus());
    $this->load->view("webadmin/loadmenu.php",$data);
}
private function me($menus = array()) {
        $html = '';
        // Build all application menus in a tree format
        foreach($menus as $menu)
        {
            // Check if this menu has children
            $count_menu_children = count(get_value($menu, 'children'));
            // Build a single line menu
            $html .= '<li id="menu-item-' . get_value($menu, 'id_menu') . '" class="dd-item dd3-item" data-id="' . get_value($menu, 'id_menu') . '" order="' . get_value($menu, 'order_') . '">';
            $html .= '<div class="dd-handle dd3-handle"></div>';
            $html .= '<div class="dd3-content">';
                $class = get_value($menu, 'dtt_inative') != '' ? 'text-error' : '';

                $label = get_value($menu, 'url_img') == '' && get_value($menu, 'label') == '' ? '[NO NAME]' : lang(get_value($menu, 'label'));
                $html .= '<a href="javascript:void(0)" class="menu-label ' . $class . '" data-toggle="modal" data-target="#modal-menu-' . get_value($menu, 'id_menu') . '">' . $label . '</a>';
                $html .= '<i class="text-success fa fa-fw fa-check-circle" style="display: none; margin-left: 5px"></i>';
                $html .= '<a href="javascript:void(0)" class="menu-delete pull-right hidden"><i class="fa fa-times fa-fw"></i></a>';
            $html .= '</div>';
            // If current menu has children items, then build all again
            if($count_menu_children > 0)
                $html .= '<ol class="dd-list">' . custom_menu_tree(get_value($menu, 'children')) . '</ol>';
            $html .= '</li>';
        }
        return $html;
    }

我的型号

public function get_menus()
    {
        $sql = "SELECT m.*,
                       IFNULL(parent, 0) AS id_menu_parent
                  FROM m_a m";
        return $this->db->query($sql)->result_array();
    }

我的视图

<?php if( count($menus) > 0 ) { ?>
<div class="dd"><ol class="dd-list"><?php echo $menus; ?></ol></div>
<?php } else { echo message('info', '', lang('There is no menu items for this group. Click on button New menu above to start adding a new menu.')); } ?>

在此中

private function me($menus = array()) {
        $html = '';
        // Build all application menus in a tree format
        foreach($menus as $menu)
        {

您忘记调用包含菜单数据的模型方法。将其添加到foreach循环之前。

$this->model_name->get_menus();

像这个

private function me($menus = array()) {
    $html = '';
    $this->model_name->get_menus();
    foreach($menus as $menu)
    {

在将值传递给foreach() 之前,只需检查$menus中是否有该值

if(count($menus)){
    foreach($menus as $menu) {
        // your code here.
    }
}
return $html;//keep this after if().

我想你必须在之前尝试一下

foreach($menus as $menu){}

检查

if(!empty($menus)){
     foreach($menus as $menu){
       your code;
     }
}
else{
   your code;
}

好的,谢谢你的帮助,我请求很辛苦,我忘记了

$map = array(
            0 => array('childen' => array())
        );
        foreach ($menus as &$menu) {
            $menu['children'] = array();
            $map[get_value($menu, 'id_menu')] = &$menu;
        }
        foreach ($menus as &$menu) {
            $map[get_value($menu, 'id_menu_parent')]['children'][] = &$menu;
        }
        return $map[0]['children'];