2016-10-19 7 views
0

Я пытаюсь дать активному пункту меню другой цвет, но цвет остается в первом пункте меню (Главная). Я уже включил активный класс в мой css.Как с нами связаться в цикле foreach

<?php 
error_reporting(E_ALL); 
ini_set('display_errors', 'on'); 

$menu = array(
    array('text' => 'Home', 'link' => 'index.php', 'target' => NULL), 
    array('text' => 'Contact', 'link' => 'contact.php', 'target' => NULL), 
    array('text' => 'Video', 'link' => 'video.php', 'target' => NULL), 
    array('text' => 'Thema', 'link' => 'thema.php', 'target' => NULL), 
    array('text' => 'Numbers', 'link' => 'numbers.php', 'target' => NULL), 
    array('text' => 'Login', 'link' => 'login.php', 'target' => NULL), 
    array('text' => 'Logout', 'link' => 'indexlogout.php', 'target' => NULL), 
    array('text' => 'Links', 'link' => 'links.php', 'target' => NULL), 
    array('text' => 'Image Maps', 'link' => 'imagemap.php', 'target' => NULL) 
); 

function makeMenu($menu){ 
    $current_page = substr($_SERVER['REQUEST_URI'], 1); 
    $current_page = str_replace('.php', '', $current_page); 

    echo '<ul>'; 
    foreach ($menu as $key => $value){ 
     if($current_page == $key){ 
      echo '<li><a class="active" href="'.$value['link'].'" target="'.$value['target'].'">'.$value['text'].'</a></li>'; 
     } 
     else { 
      echo '<li><a href="'.$value['link'].'" target="'.$value['target'].'">'.$value['text'].'</a></li>'; 
     } 
    } 
    echo '</ul>'; 
} 

makeMenu($menu); 

?>

+1

'$ key' или' $ значение [ 'текст'] '??, я думаю, что' если ($ CURRENT_PAGE == $ key) {'должен быть' if ($ current_page == $ value ['text']) {' – devpro

+0

так что есть в вашем REQUEST_URI? Вы сравниваете это с '$ key', который является чисто числовым значением. ваши страницы ДЕЙСТВИТЕЛЬНО называются '0.php',' 1.php' и т. д.?? –

+0

Ваша $ current_page пытается равным «text» ($ key) попытаться сделать это $ current_page == $ value –

ответ

0

$key в Еогеасп будет числовой один. Например, для первого элемента будет 0, и я думаю, что это не то, что вам нужно.

Вы должны изменить его и проверить со значением link от $value

function makeMenu($menu){ 
    $current_page = substr($_SERVER['REQUEST_URI'], 1); 

    echo '<ul>'; 
    foreach ($menu as $value){ 
     if($current_page == $value['link']){ 
      echo '<li><a class="active" href="'.$value['link'].'" target="'.$value['target'].'">'.$value['text'].'</a></li>'; 
     } 
     else { 
      echo '<li><a href="'.$value['link'].'" target="'.$value['target'].'">'.$value['text'].'</a></li>'; 
     } 
    } 
    echo '</ul>'; 
} 
Смежные вопросы