2017-06-03 40 views
0

我想用PHP及其foreach循环生成导航菜单。因此,由于“家庭”项目与其他项目有所不同,我想打电话给他,并在某种条件下改变其风格。下面的代码适用于除首页以外的所有其他菜单项,因为它由于某种原因将array添加到<li>标签。你能告诉我在这里犯的错吗?在foreach循环中更改单个项目

<?php 
    $menu = array("Home" => "http://mywebsite.com", "Projects" => "/projects/", "About" => "/about/", "Contact" => "/contact/"); 
    foreach ($menu as $opis => $link) 
    { 
    if (strtolower($opis) == $_GET['go']) 
    { 
     $style = "class=\"active\""; 
    } 
    else 
    { 
     if (!$_GET['go'] || $_GET['go'] == "home") 
     { 
     $style[0] = "class=\"active\""; 
     echo $style[0] . " "; 
     }  
    } 
    echo "<li ".$style."><a href=".$link.">".$opis."</a></li>"; 
    } 
?> 

回答

0

这是因为你已经添加了一个关键变量$风格时$GET['go']home -

$style[0] = "class=\"active\""; 

更改为$style = "class=\"active\"";

+0

不,这将增加额外的样式的所有项目,我想都在同一时间只有一个样式。 –

0

您需要设置$style'' 。如果你不这样做,你将在下一次迭代时保持class="active"

$menu = array("Home" => "http://mywebsite.com", "Projects" => "/projects/", 
"About" => "/about/", "Contact" => "/contact/"); 
if(empty($_GET['go'])) $_GET['go'] = 'home'; 
foreach ($menu as $opis => $link) 
{ 
    $style = (strtolower($opis) == $_GET['go']) ? "class=\"active\"" : ''; 
    echo "<li $style><a href='$link'>$opis</a></li>\n"; 
} 
+0

再次,这将活动类添加到所有项目 –

+0

不,它在每次迭代时重置。 –

+0

我已经检查过,它的确如我所述 –