【问题标题】:Need some help in PHP dynamic nested navigation在 PHP 动态嵌套导航中需要一些帮助
【发布时间】:2015-07-21 12:02:34
【问题描述】:

我已经在 PHP 中完成了简单的动态导航,例如从数组中拉出 HOME、ABOUT、FAQ、CONTACT 然后显示它。现在我只需要知道如果常见问题解答在将鼠标悬停在它上面后还有 4 个选项可以显示时我可以编码什么以及如何编码。我需要一些关于 php 编码而不是 CSS 的帮助。 目前我有这种情况

 <?php
 $pages = array(
   'index.php' => 'Home',
   'cupping.php' => 'Cupping',
   'success.php' => 'Success Stories',
   'healing.php' => 'Healing',
   'eating-right.php' => 'Eeating Right',
   'blog.php' => 'Blog',
   'faq.php' => 'FAQs',
   'contact.php' => 'Contact Us',
 ) ;


<ul class="nav navbar-nav">
   <?php foreach ($pages as $filename => $pageTitle) { 
      if ($filename == $currentPage) { ?>
         <li class="current"><?php echo $pageTitle ; ?></li>
         <?php } else { ?>
       <li><a href="<?php echo $filename ; ?>"><?php echo $pageTitle ; ?></a></li>
            <?php
         } //if 
      } //foreach 
   ?>
</ul>

现在我如何打印也有一些嵌套导航的 HEALING,以便 php 编码后的 HTML 看起来像这样

<ul>
 <li><ahref="index.php">Home</a></li>                                    
 <li><a href="cupping.php">Cupping</a></li>                              
 <li><a href="success-stories.php">Success Stories</a></li>                                    
 <li><a href="healing.php">Healing Through</a></li>                                    
  <ul class="submenu">
    <li><a href="herbs.php">Herbs</a></li>                        
    <li><a href="nature.php">Nature</a></li>                                               
    <li><a href="behaviour.php">Behaviour</a></li>                        
  </ul>
 <li><a href="blog.php">Blog</a></li>                                    
 <li><a href="faqs.php">FAQs</a></li>                                    
 <li><a href="contact.php">Contact Us</a></li>                                    
</ul>

我是 php 新手,需要一些帮助。谢谢:)

【问题讨论】:

    标签: php html navigation


    【解决方案1】:
    <?php
     $pages = array(
       'index.php' => 'Home',
       'cupping.php' => 'Cupping',
       'success.php' => 'Success Stories',
       'healing.php' => 'Healing',
       'eating-right.php' => 'Eeating Right',
       'blog.php' => 'Blog',
       'faq.php' => array('FAQs'=>array('submenu1.php'=>'submenu1','submenu2.php'=>'submenu2')) ,
       'contact.php' => 'Contact Us',
     ) ;
    
    
    ?>
    
        <ul class="nav navbar-nav">
       <?php foreach ($pages as $filename => $pageTitle) { 
          if ($filename == $currentPage) { 
                if(is_array($pageTitle)){
                   foreach ($pageTitle as $menu => $value) {
                   echo '<li class="current">'.$menu.'</li>';
                   }
                }else{
    
                  echo '<li class="current">'.$pageTitle.'</li>' ;
                }
             ?>
    
    
             <?php } else {
                if(is_array($pageTitle)){
    
                   foreach ($pageTitle as $menu => $value) {
    
                     echo '<li><a href="#">'.$menu.'</a></li>';
                     echo '<ul>';
                         foreach ($value as $key => $submenu) {
                            echo '<li><a href="'.$key.'">'.$submenu.'</a></li>';
    
                         }
                     echo '</ul>';
                   }
                }else{
              ?>
                 <li><a href="<?php echo $filename ; ?>"><?php echo $pageTitle ; ?></a></li>
                <?php
                }  
             } //if 
          } //foreach 
       ?>
    </ul>
    

    试试这个代码,它将帮助您为任何主菜单创建多个子菜单。

    【讨论】:

    • 很好,但是如果我输入 $currentPage ='faq.php'; 会发生什么?它将得到数组到字符串的转换
    • 我已经更新了代码尝试重新执行,修复了错误。
    【解决方案2】:

    尝试将值切换到索引。请看下面。

    <?php
    $pages = array(
        'home' => array('url' => 'index.php', 'caption' => 'Home'),
        'faq' => array('url' => 'faq.php', 'caption' => 'FAQs', 'submenu' =>
            array(
                'submenu1' => array('url' => 'Submenu1.php', 'caption' => 'Submenu1'),
                'submenu2' => array('url' => 'Submenu2.php', 'caption' => 'Submenu2')
            )
        ),
        'contact' => array('url' => 'contact.php', 'caption' => 'Contact Us'),
    );
    ?>
    <ul class="nav navbar-nav">
        <?php foreach ($pages as $parent_menu) { ?>
            <li class="<?= ($parent_menu['url'] == $currentPage ? 'current' : '') ?>">
                <a href="<?= $parent_menu['url'] ?>"><?= $parent_menu['caption'] ?></a>
                <?php if (isset($parent_menu['submenu'])) { ?>
                    <ul class="">
                        <?php foreach ($parent_menu['submenu'] as $child) { ?>
                            <li><a href="<?= $child['url'] ?>"><?= $child['caption'] ?></a></li>
                        <?php } ?>
                    </ul>
                <?php } ?>
            </li>
        <?php } ?>
    </ul>
    

    【讨论】:

    • 很好,但是为什么你不考虑 $currentPage = 'faq.php'; 尊重 class="current" 呢?
    【解决方案3】:

    正如 Disha V. 所展示的,多维关联数组就是您想要的。然后嵌套的 foreach 循环允许您访问不同的键。你可以在这里阅读更多信息:https://www.safaribooksonline.com/library/view/learning-php-5/0596005601/ch04s05.html

    【讨论】:

      猜你喜欢
      • 2014-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-29
      • 2011-03-30
      相关资源
      最近更新 更多