foreach ($nav_items as $nav_href=>$nav_title=>$nav_class) {
if ($pageHref == $nav_href) {
echo '<li class="' . $nav_class . 'active">' . $nav_title . '</li>';
} else {
echo '<li class="' . $nav_class . '">' . $nav_title . '</li>';
}
}
上面的代码有什么问题?这对应于下面的数组。
$pageLoc = 'where';
$nav_items = array(
'index'=>'Home'==>'',
'where'=>'Where?'==>'dropdown'==>'',
'appeals'=>'Current Appeals'==>'',
'news'=>'Latest News'==>'',
'events'=>'Events'==>'',
'dontate'=>'Dontate'==>'',
);
我基本上试图在列表项匹配$pageLoc
时将活动类放在列表项前面,而当它不仅仅是一个简单的<li class="">
但是下拉菜单项:{{1}总是需要一个'where?'
!当它处于活动状态时,它将是<li class="dropdown">
答案 0 :(得分:2)
你有一个完整的语法错误:
foreach ($nav_items as $nav_href=>$nav_title=>$nav_class) {
^^^^^^^^^^^^
语法是
foreach($array as $key => $value)
你不能拥有=> $value1 => $value2 etc...
。
答案 1 :(得分:0)
你可以将它作为:
foreach($ nav_items为$ nav_title =&gt; $ nav_class){
....
}
你想用$ nav_href检查什么?
答案 2 :(得分:0)
你的$nav_items
非常混乱,而不是正确的数组。
$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>';
}
}
答案 3 :(得分:0)
没有这样的语法可以让它变得那么容易。 但这是你可能想要的:
这是您创建符合您需求的嵌套数组的方法:
$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
:
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>';
}
}
这是另外两个注释:
注1:在php5中,您可以使用对象并创建一个包含仅在简单array('href' => 'dontate', 'title' => 'Dontate', 'class' => '')
注2: 你的行
echo '<li class="' . $nav_class . 'active">' . $nav_title . '</li>';
将两个类连接成一个。所以这段代码会给你dropdownactive
作为类。您需要在活动之前插入空格,否则CSS将无法识别这两个类。