PHP导航,有更好的方法吗?

PHP导航,有更好的方法吗?,php,html,navigation,nav,Php,Html,Navigation,Nav,我对使用PHP相当陌生,在本次导航之前,我的PHP使用范围很简单 我编写了一个navigation.php文件,该文件使用variables.php中从数组中提取的变量动态生成导航链接 总体目标是仅通过编辑变量来添加/减去链接、子AV、子AV、子AV。php 我用来生成HTML结构的方法对我来说很笨拙,它工作得很好,但我觉得有一种更简单的方法来实现这一点 此外,我还需要为存在subnav的任何LI提供额外的样式(箭头指示存在subnav)。我想动态地生成它 也就是说,我的问题是: 有没有更简单的

我对使用PHP相当陌生,在本次导航之前,我的PHP使用范围很简单

我编写了一个navigation.php文件,该文件使用variables.php中从数组中提取的变量动态生成导航链接

总体目标是仅通过编辑变量来添加/减去链接、子AV、子AV、子AV。php

我用来生成HTML结构的方法对我来说很笨拙,它工作得很好,但我觉得有一种更简单的方法来实现这一点

此外,我还需要为存在subnav的任何LI提供额外的样式(箭头指示存在subnav)。我想动态地生成它

也就是说,我的问题是:

  • 有没有更简单的方法
  • 是否有一种方法可以根据是否存在子导航动态生成my's
  • 每个页面都有以下代码,它会根据页面的不同而变化。

    
    
    My variables.php:

    
    
    导航PHP文件main nav.PHP


    您所做的几乎是一目了然,但您正在让自己围绕自己的代码编写
    相反,允许它是泛型的,因此编写一个函数,如果需要,可以调用它自己来执行此操作:

    $menu_items = array(
        'Home' => 'index.php'
        'About' => array('about.php', 
             array('Our Team'=>'ourteam.php'),
         etc
        );
    ?>
    
    • 循环给定的数组
    • 添加
    • 如果是字符串(),则是一项附加
    • 如果是_array(),则存在子项,
      • 添加
      • 将第二个元素发送到此函数并附加它返回的html
    • 关闭
  • 关闭
  • 还它
  • 一个函数处理所有元素,无论它们是主元素还是子元素,并且在完成列表后调用它,无论有多少子列表


    现在,对于您的迷你菜单,只需在使用一个函数创建html之前,按其键(Home、About、Services)从主数组中选择元素即可

    一个更简洁的解决方案是使用它们构建导航。如果数组的
    是另一个数组,那么您知道它有一个子菜单。

    乍一看,我想知道为什么您不使用多维数组或php编写html。为了回答你的问题-是的,是的。我尝试了一个多维数组,但我无法让它工作,即使在看了其他一些代码之后。毫无疑问是因为我缺乏知识。这是有道理的。你能提供一个函数可能是什么样子的例子,或者一个指向某个地方的链接来帮助我理解它吗?谢谢
    <!-- NAVIGATION ARRAY -->
    
    <?php
    $nav_mini = array(
        'Home' => 'index.php',
        'About' => 'about.php',
        'Services' => 'services.php'
        );
    ?>
    
    <?php
    $nav_main = array(
        'Home' => 'index.php',
        'About' => 'about.php',
        'Services' => 'services.php',
        'Portfolio' => 'contact.php',
        'Clients' => 'about.php',
        'Gallery' => 'services.php',
        'News' => 'services.php',
        'Contact Us' => 'contact.php'
        );
    ?>
    
    <?php // SUB NAV ARRAYS
    
    $nav_sub_about = array(
        'Our Team' => 'about.php'
        );
    
    $nav_sub_michael = array(
        'Michael' => 'index.php',
        'Aaron' => 'about.php',
        'Kenny' => 'about.php',
        'David' => 'about.php'
        );
    
    $nav_sub_services = array(
        'Get Found' => 'about.php'
        );
    
    ?>
    
        <?php 
    
            foreach ( $nav_main as $key => $value ) {
    
                echo "<li><a ";
                    echo "class='"; // STARTS CLASS=
                    if ( $title == $key) { 
                    echo "active "; }// ADDS ACTIVE CLASS TO LINK OF CURRENT PAGE
                echo "' "; // END QUOTES FOR CLASS="
    
    
                echo "href='$value'>$key";
    
                    if ( $key == "About") { // STARTS IF SEQUENCE FOR SUBNAV ARROWS
                        echo "<span class='arrow'> +</span>";}
                    elseif ( $key == "Services") {
                        echo "<span class='arrow'> +</span>";}
    
                echo "</a>\n";  // END ANCHOR TAG FOR MAIN NAV LINKS
    
    
    
    //----------------------------------------------------------------------------------------------------------//
    // PLEASE START SUB-NAVS HERE ------------------------------------------------------------------------------//
    // AT THIS POINT A NEW <LI> IS GENERATED FROM THE FIRST FOREACH, IF THE BELOW IS TRUE IT POPULATES A SUBNAV //      
    
    
            if ( $key == "About"){  // START SUBNAV FOR ABOUT
                echo "<ul class='main-sub-nav'>"; // THIS LINE WAS ADDED TO START THE <UL> FOR THE SUBNAV, IT ENDS ON LINE 14
    
                foreach ( $nav_sub_about as $key => $value ) {
                    echo "<li><a href='$value'>$key";
    
                        if ( $key == "Our Team") { // STARTS IF SEQUENCE FOR SUBNAV ARROWS
                        echo "<span class='arrow'> +</span>";}
    
                    echo "</a>\n"; // ENDS ANCHOR TAG FROM SUBNAV LI
    
                        // SUB-SUB-NAV STARTS HERE
                            if ( $key == 'Our Team') {
                            echo "<ul class='main-sub-sub-nav'>"; // THIS STARTS THE UL FOR SUB-SUB-NAV
    
                                foreach ($nav_sub_michael as $key => $value ) {
                            echo "<li><a href='$value'>$key</a></li>\n";
                        }
                        echo "</ul>"; // THIS ENDS THE SUB-SUB-NAV UL STARTED ON LINE 34
                    echo "</li>";}// THIS IS THE END IF <LI> FROM THE SECOND FOREACH ON LINE 35
    
            }
    
            echo "</ul>"; // THIS WAS ADDED TO END THE SUBNAV <UL> STARTED ON LINE 11
            echo "</li>";} // THIS IS THE END OF THE <LI> FROM THE FIRST FOREACH ECHO FROM LINE 8
    
    //----------------------------------------------------------------------------------------------------------//
    // AT THIS POINT A NEW <LI> IS GENERATED FROM THE FIRST FOREACH, IF THE BELOW IS TRUE IT POPULATES A SUBNAV //
    
                if ( $key == "Services"){
                    echo "<ul class='main-sub-nav'>"; // THIS LINE WAS ADDED TO START THE <UL> FOR THE SUBNAV, IT ENDS ON LINE 14
    
                    foreach ( $nav_sub_services as $key => $value ) {
                        echo "<li><a href='$value'>$key</a></li>\n";}
                    echo "</ul>"; // THIS WAS ADDED TO END THE SUBNAV <UL> STARTED ON LINE 11
                    echo "</li>";} // THIS IS THE END OF THE <LI> FROM THE FIRST FOREACH ECHO FROM LINE 8
    
    
    
            } // THIS BRACKET ENDS THE ENTIRE SET OF PHP.  ITS PAIR IS ON LINE 19
    
    ?>
    
    $menu_items = array(
        'Home' => 'index.php'
        'About' => array('about.php', 
             array('Our Team'=>'ourteam.php'),
         etc
        );
    ?>