Navbar中的活动类 - 我的php有什么问题?

时间:2013-06-14 16:42:45

标签: php arrays foreach navbar

我在试图解决一些PHP代码时遇到了一些麻烦。 解释:

我有一个由bootstrap制作的导航栏。 我希望这个导航栏根据页面更改它的活动类。 我在导航栏中有一个subnav,有一个li类'dropdown'。 当此页面处于活动状态时,此li类要更改为“dropdown active” 当其他页面处于活动状态时,他们只需要一个简单的“活动”类。

我的代码如下: PHP:

    $pageLoc = 'where';
$nav_items = array('index'=>'Home', 'where'=>'Where?', 'appeals'=>'Current Appeals', 'news'=>'Latest News', 'events'=>'Events', 'dontate'=>'Dontate', );
$nav_sub = array('africa'=>'Africa', 'bangladesh'=>'Bangladesh', 'gaza'=>'Palestine/Gaza', 'kashmir'=>'Kashmir', 'pakistan'=>'Pakistan', 'uk'=>'United Kingdom' );

    foreach ($nav_items as $nav_href=>$nav_title) {
   if ($pageLoc == $nav_href) && ($pageLoc == 'where') {
         echo '<li class="dropdown active">' . $nav_title . '</li>';
   }
   elseif ($pageHref == $nav_href) && ($pageLoc == 'no') {
         echo '<li class="dropdown">' . $nav_title . '</li>';
   }
   elseif ($pageHref == $nav_href) {
         echo '<li class="active">' . $nav_title . '</li>';
   } 
   else {
       echo '<li>' . $nav_title . '</li>';
   }
}

导航栏:

<ul class="nav pull-right">
                <li class="pull-right">
                    <a class="btn-danger" href="donate"><i class="icon-medkit"> DONATE!</i></a>
                </li>
              </ul>
              <ul class="nav pull-right">
                  <li class="">
                    <a href="../">Home</a>
                  </li>
                  <li class="dropdown">
                    <a href="../where/" class="dropdown-toggle disabled" data-toggle="dropdown">
                        Where?
                    <b class="caret"></b>
                    </a>
                        <ul class="dropdown-menu">
                            <li class="nav-header">Where we operate</li>
                            <li class="divider"></li>
                            <li><a href="../where/africa">Africa</a></li>
                            <li><a href="../where/bangladesh">Bangladesh</a></li>
                            <li><a href="../where/palestine-gaza">Palestine/Gaza</a></li>
                            <li><a href="../where/kashmir">Kashmir</a></li>
                            <li><a href="../where/pakistan">Pakistan</a></li>
                        </ul>
                  </li>
                  <li class="">
                    <a href="../appeals">Current Appeals</a>
                  </li>
                  <li class="">
                    <a href="../news">Latest News</a>
                  </li>
                  <li class="">
                    <a href="../events">Events</a>
                  </li>
            </ul>

我知道这个php正在生成语法错误。不幸的是我不是专业人士! :(这是

what I originally had:
foreach ($nav_items as $nav_href=>$nav_title) {
   if ($pageHref == $nav_href) {
         echo '<li class="active">' . $nav_title . '</li>';
   } 
   else {
       echo '<li>' . $nav_title . '</li>';
   }
}

1 个答案:

答案 0 :(得分:0)

你写过:

if ($pageLoc == $nav_href) && ($pageLoc == 'where')

应该说:

if ($pageLoc == $nav_href && $pageLoc == 'where')

更一般地说,缺少详细的调试信息很痛苦,但有一些解决方法。例如,如果删除一半代码并尝试再次运行*,它是否仍会出现语法错误?如果是这样,删除一点,看看会发生什么;如果没有,取消删除一些,看看它是否有效。继续尝试并缩小范围,直到找到错误的位置。

*(显然,不要以创建语法错误的方式删除;例如,如果删除包含if的{​​{1}}子句的结尾,您将获得非 - 匹配括号。)