Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.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 迷失在循环中_Php_Twitter Bootstrap - Fatal编程技术网

Php 迷失在循环中

Php 迷失在循环中,php,twitter-bootstrap,Php,Twitter Bootstrap,我试图创建一个动态菜单与子级,但我认为我在我的循环中迷失了方向。我可以有第1级,但在其他级别之后有相同的名称 我可以应用哪些修改 多谢各位 result : we can see at the 2bnd level the same name for all 1st level. Accueil 2nd level Administration 2nd level Index Catalogue Catalogue 2nd le

我试图创建一个动态菜单与子级,但我认为我在我的循环中迷失了方向。我可以有第1级,但在其他级别之后有相同的名称

我可以应用哪些修改

多谢各位

result :  we can see at the 2bnd level the same name for all 1st level.

    Accueil
        2nd level Administration
        2nd level Index Catalogue
    Catalogue
        2nd level Administration
        2nd level Index Catalogue
    Configuration
        2nd level Administration
        2nd level Index Catalogue



<?php
// Select all entries from the menu table
      $Qmenus = $Db->prepare('SELECT a.id, 
                                            a.link, 
                                            a.parent_id, 
                                            a.class,
                                            a.sort_order,
                                            amd.label 
                                      FROM :table_administrator_menu a,
                                          :table_administrator_menu_description amd
                                      where a.id = amd.id
                                      and amd.language_id = :language_id
                                      ORDER BY a.parent_id, 
                                               a.sort_order
                                      ');

      $Qmenus->bindInt(':language_id', $Language->getId());
      $Qmenus->execute();

      $Qmenus = $Qmenus->fetchAll();
    ?>

    <!-- Navigation -->
    <nav class="navbar navbar-default navbar-static-top" role="navigation" style="margin-bottom: 0">
      <div class="navbar-default sidebar" role="navigation">
        <div class="sidebar-nav navbar-collapse">
          <ul class="nav" id="side-menu">
    <?php
        foreach ($Qmenus as $menus) {
          if ($menus['parent_id'] == 0) {
    ?>
            <li>
              <a href="#"><i class="fa fa-sitemap fa-fw"></i><?php echo $menus['label']; ?><span class="fa arrow"></span></a>
    <?php
            foreach ($Qmenus as $menus) {
              if ( $menus['parent_id'] == 1) {
    ?>
              <ul class="nav nav-second-level">
                <li>
                  <a href="#">2nd level <?php echo $menus['label']?></a>
                </li>
    <?php
                foreach ($Qmenus as $menus) {
                  if ( $menus['parent_id'] == 2) {
    ?>
                <li>
                  <a href="#">Third Level <span class="fa arrow"></span></a>
                  <ul class="nav nav-third-level">
                    <li>
                      <a href="#">Third Level Item</a>
                    </li>
                    <li>
                      <a href="#">Third Level Item</a>
                    </li>
                    <li>
                      <a href="#">Third Level Item</a>
                    </li>
                    <li>
                      <a href="#">Third Level Item</a>
                    </li>
                  </ul>
                </li>
    <?php
                  }
                } // end level 3
    ?>

              </ul>
    <?php
              } //
            } // end level 3
    ?>
            </li>
    <?php
        } // end level 1
      }
    ?>


          </ul>
        </div>
        <!-- /.sidebar-collapse -->
      </div>
      <!-- /.navbar-static-side -->
    </nav>
表格管理员菜单

 id     parent_id   sort_order  class
    1       0            2  
    3       0            1  
    5       0            3  
    6       0            4  
    7       3            1  
    8       3            2  
    9       1            1  
    10      9            0 
表说明菜单

 id  lable            language_id
    1   Configuration   1
    1   Configuration   2
    3   Accueil         1
    3   Index           2
    5   Catalogue       1
    5   Catalog         2
    7   Administration  1
    7   Administration  2
    8   Index Catalogue 1
    8   Index Shop      2
    9   Ma boutique     1
    9   My shop         2
    10  Configuration générale  1
    10  general Configuration   2

前面的示例没有达到您的预期,因此我在上创建了新的联机:

$menu_parent = array();
$menu_sub = array();
foreach ($Qmenus as $menus) {
    if ($menus['parent_id']==0) {
        $menu_parent[$menus['id']] = $menus;
        }
    else {
        if (isset($menu_parent[ $menus['parent_id'] ])) {
            $menu_parent[ $menus['parent_id'] ]['sub_menu'][$menus['id']] = $menus['id'];
            $menu_sub[$menus['id']] = $menus;
            }
        else if (isset($menu_sub[ $menus['parent_id'] ])) {
                $menu_sub[ $menus['parent_id'] ]['sub_menu'][$menus['id']] = $menus['id'];
                $menu_sub[$menus['id']] = $menus;
                }
        }
}

foreach($menu_parent as $key => $menus) {
        echo '<li><a href="#"><i class="fa fa-sitemap fa-fw"></i>'.$menus['label'].'<span class="fa arrow"></span></a>';
        if (!empty($menus['sub_menu'])) {
            echo '<ul class="nav nav-second-level">';
            foreach($menus['sub_menu'] as $second_level) {
                    echo '<li><a href="#">'.$menu_sub[ $second_level ]['label'].'</a>';
                    if (!empty($menu_sub[ $second_level ]['sub_menu'])) {
                        echo '<ul class="nav nav-third-level">';
                        foreach($menu_sub[ $second_level ]['sub_menu'] as $third_level) {
                                echo '<li><a href="#">'.$menu_sub[ $third_level ]['label'].'</a>';
                                if (!empty($menu_sub[ $third_level ]['sub_menu'])) {
                                    echo '<ul class="nav nav-fourth-level">';
                                    foreach($menu_sub[ $third_level ]['sub_menu'] as $fourth_level) {
                                            echo '<li><a href="#">'.$menu_sub[ $fourth_level ]['label'].'</a></li>';
                                            }
                                    echo '</ul>';
                                    }
                                echo '</li>';
                                }
                        echo '</ul>';
                        }

                    echo '</li>';
                    }
            echo '</ul>';
            }
        echo '</li>';
}
$menu_parent=array();
$menu_sub=array();
foreach($Qmenus作为$menu){
如果($menus['parent_id']==0){
$menu\u父菜单[$menus['id']]=$menus;
}
否则{
如果(isset($menu\U parent[$menus['parent\U id']])){
$menu_parent[$menus['parent_id']]['sub_menu'][$menus['id']]=$menus['id'];
$menu_sub[$menus['id']]=$menus;
}
else if(isset($menu_sub[$menus['parent_id']])){
$menu_sub[$menus['parent_id']]['sub_menu'][$menus['id']]=$menus['id'];
$menu_sub[$menus['id']]=$menus;
}
}
}
foreach($menu\u父项为$key=>$menus){
回音“
  • ”; 如果(!空($menus['sub_menu'])){ 回声'
      ; foreach($menus['sub_menu']作为$second_level){ 回音“
    • ”; 如果(!empty($menu_sub[$second_level]['sub_menu'])){ 回声'
        ; foreach($menu_sub[$second_level]['sub_menu']作为$third_level){ 回音“
      • ”; 如果(!empty($menu_sub[$third_level]['sub_menu'])){ echo'
          ; foreach($menu_sub[$third_level]['sub_menu']作为$third_level){ 回音“
        • ”; } 回声“
        ”; } 回音“
      • ”; } 回声“
      ”; } 回音“
    • ”; } 回声“
    ”; } 回音“
  • ”; }
    您正在循环同一字段的树倍,为什么要这样做?如果
    检查
    父id
    ,是否应该有一个
    循环。好的,我是初学者,如何正确执行。我很乐意帮助您,但是您能打印完整的数组
    Qmenus
    。所以我们可以看到你有什么,因为我们已经知道你想要什么。Tk,我在代码中插入了QmenusOk上的元素,Tk,只是一个3级或4级的问题。它也能工作,因为我需要它。那么我如何理解您的
    parent\u id
    表示项目的级别,我指的是第一级、第二级、第三级等等?是吗?没错,这是我要创建的系统,但是你的系统有问题,你如何连接第二层和第一层,或者第三层和第二层?(在阵列中-看一看,如何连接其中任何一个)?我在想,
    parent\u id
    表示菜单的
    id
    ,并且
    parent\u id=0
    ,或者您正在计划,数组将始终排序,parent,parent的第二级,3nd级等等,然后是parent,这个parent的第二级。。等等
    $menu_parent = array();
    $menu_sub = array();
    foreach ($Qmenus as $menus) {
        if ($menus['parent_id']==0) {
            $menu_parent[$menus['id']] = $menus;
            }
        else {
            if (isset($menu_parent[ $menus['parent_id'] ])) {
                $menu_parent[ $menus['parent_id'] ]['sub_menu'][$menus['id']] = $menus['id'];
                $menu_sub[$menus['id']] = $menus;
                }
            else if (isset($menu_sub[ $menus['parent_id'] ])) {
                    $menu_sub[ $menus['parent_id'] ]['sub_menu'][$menus['id']] = $menus['id'];
                    $menu_sub[$menus['id']] = $menus;
                    }
            }
    }
    
    foreach($menu_parent as $key => $menus) {
            echo '<li><a href="#"><i class="fa fa-sitemap fa-fw"></i>'.$menus['label'].'<span class="fa arrow"></span></a>';
            if (!empty($menus['sub_menu'])) {
                echo '<ul class="nav nav-second-level">';
                foreach($menus['sub_menu'] as $second_level) {
                        echo '<li><a href="#">'.$menu_sub[ $second_level ]['label'].'</a>';
                        if (!empty($menu_sub[ $second_level ]['sub_menu'])) {
                            echo '<ul class="nav nav-third-level">';
                            foreach($menu_sub[ $second_level ]['sub_menu'] as $third_level) {
                                    echo '<li><a href="#">'.$menu_sub[ $third_level ]['label'].'</a>';
                                    if (!empty($menu_sub[ $third_level ]['sub_menu'])) {
                                        echo '<ul class="nav nav-fourth-level">';
                                        foreach($menu_sub[ $third_level ]['sub_menu'] as $fourth_level) {
                                                echo '<li><a href="#">'.$menu_sub[ $fourth_level ]['label'].'</a></li>';
                                                }
                                        echo '</ul>';
                                        }
                                    echo '</li>';
                                    }
                            echo '</ul>';
                            }
    
                        echo '</li>';
                        }
                echo '</ul>';
                }
            echo '</li>';
    }