如何在PHP数组中嵌套数据并使用foreach()访问它?

如何在PHP数组中嵌套数据并使用foreach()访问它?,php,arrays,foreach,navbar,php5,Php,Arrays,Foreach,Navbar,Php5,我基本上是在列表项前面放置一个活动类,当它与$pageLoc匹配时,并且当它不只是一个简单的而是下拉菜单项时:'where?'总是需要一个!当它处于活动状态时,它将是您有一个明显的语法错误: $pageLoc = 'where'; $nav_items = array( 'index'=>'Home'==>'', 'where'=>'Where?'==>'dropdown'==>'', 'appeals'=>'Current App

我基本上是在列表项前面放置一个活动类,当它与
$pageLoc
匹配时,并且当它不只是一个简单的
  • 而是下拉菜单项时:
    'where?'
    总是需要一个
  • !当它处于活动状态时,它将是
  • 您有一个明显的语法错误:

    $pageLoc = 'where';
    $nav_items = array(
        'index'=>'Home'==>'', 
        'where'=>'Where?'==>'dropdown'==>'', 
        'appeals'=>'Current Appeals'==>'', 
        'news'=>'Latest News'==>'', 
        'events'=>'Events'==>'', 
        'dontate'=>'Dontate'==>'', 
    );
    
    语法是

    foreach ($nav_items as $nav_href=>$nav_title=>$nav_class) {
                                                ^^^^^^^^^^^^
    
    您不能拥有
    =>$value1=>$value2等。

    您可以将其作为:

    foreach($nav_项目作为$nav_标题=>$nav_类别){

    }


    你想用$nav_href检查什么?

    你的
    $nav_项目
    非常混乱,不是一个正确的数组

      ....  
    
    $pageLoc='where';
    $nav_items=array('index'=>'Home=>'、'where'=>'where?=>'、'appeals'=>'当前申诉==>'、'news'=>'最新新闻==>'、'events'=>'events=>'、'dontate'=>'dontate=>');
    foreach($nav_项目作为$nav_类=>$nav_标题){
    如果($pageLoc==$nav_href){
    回显“
  • .$nav_title.
  • ”; } 否则{ 回声“
  • ”.$nav_title.
  • ”; } }
    没有这样的语法让它这么简单。 但以下是您可能想要的:

    以下是创建符合您需要的嵌套阵列的方法:

    $pageLoc = 'where';
    $nav_items = array('index'=>'Home==>', 'where'=>'Where?==>', 'appeals'=>'Current Appeals==>', 'news'=>'Latest News==>', 'events'=>'Events==>', 'dontate'=>'Dontate==>');
    
    
    foreach ($nav_items as $nav_class=>$nav_title) {
       if ($pageLoc == $nav_href) {
             echo '<li class="' . $nav_class .  'active">' . $nav_title . '</li>';
       } 
       else {
           echo '<li class="' . $nav_class . '">' . $nav_title . '</li>';
       }
    }
    
    根据上述数组结构,这将是供您使用的
    foreach

    $nav_items = array(
        array('href' => 'index',   'title' => 'Home',            'class' => ''), 
        array('href' => 'where',   'title' => 'Where?',          'class' => 'dropdown'), 
        array('href' => 'appeals', 'title' => 'Current Appeals', 'class' => ''), 
        array('href' => 'news',    'title' => 'Latest News',     'class' => ''), 
        array('href' => 'events',  'title' => 'Events',          'class' => ''), 
        array('href' => 'dontate', 'title' => 'Dontate',         'class' => ''),                
    );
    

    将两个类连接为一个。因此,此代码将为您提供
    dropdownactive
    作为类。您需要在激活之前插入一个空格,否则CSS将无法识别这两个类

    你需要使用嵌套数组来解决这个问题,你需要做的就是弄清楚这是行不通的。。。运行代码。你会得到一个错误,告诉你到底出了什么问题(在本例中是你的语法)?我有一个活动课程的菜单。但是对于一个菜单项,我需要一个下拉类来始终在那里主持。
    $nav_href=>foreach中的$nav_title
    ,然后从foreach循环中获取它们。这是一个导航栏菜单。所以他们都有正常的
  • 。在该页面上时,例如$nav_href='current page',该菜单项的li类将处于“活动”状态,而其他类将保持在
  • 。我的问题是,我有一个菜单项总是需要一个下拉类。你为什么不这样检查呢?如果($pageLoc==$nav_类),因为$nav_类是键值对中的键,并且从数组中可以看到,'where'似乎是键。
    $pageLoc = 'where';
    $nav_items = array('index'=>'Home==>', 'where'=>'Where?==>', 'appeals'=>'Current Appeals==>', 'news'=>'Latest News==>', 'events'=>'Events==>', 'dontate'=>'Dontate==>');
    
    
    foreach ($nav_items as $nav_class=>$nav_title) {
       if ($pageLoc == $nav_href) {
             echo '<li class="' . $nav_class .  'active">' . $nav_title . '</li>';
       } 
       else {
           echo '<li class="' . $nav_class . '">' . $nav_title . '</li>';
       }
    }
    
    $nav_items = array(
        array('href' => 'index',   'title' => 'Home',            'class' => ''), 
        array('href' => 'where',   'title' => 'Where?',          'class' => 'dropdown'), 
        array('href' => 'appeals', 'title' => 'Current Appeals', 'class' => ''), 
        array('href' => 'news',    'title' => 'Latest News',     'class' => ''), 
        array('href' => 'events',  'title' => 'Events',          'class' => ''), 
        array('href' => 'dontate', 'title' => 'Dontate',         'class' => ''),                
    );
    
    foreach ($nav_items as $item) {
        if ($pageHref == $item['href']) {
            echo '<li class="' . $item['class'] .  ' active">' . $item['title'] . '</li>';
        } else {
            echo '<li class="' . $item['class'] . '">' . $item['title'] . '</li>';
        }
    }
    
    echo '<li class="' . $nav_class .  'active">' . $nav_title . '</li>';