2016-05-27 6 views
0

У меня есть сценарий, в котором перечислены все каталоги как ссылки.Как выделить текущую ссылку в цикле foreach

<?php 
$dirs = array_filter(glob('../*'), 'is_dir'); 
?> 

<ul style="float:left;"> 
<?php 
foreach ($dirs as $nav) { 
    echo "<li><a href='$nav'>".basename($nav)."</a></li>"; 
} 
?> 
</ul> 

Я хочу выделить текущий каталог или дать текущей ссылке класс или идентификатор. Я понимаю, что мне нужно, чтобы оператор выполнял это как if(currentLink=thisLink) { // add span class somehow} else {// continue looping}, но я не совсем уверен, как это сделать.

Что было бы правильным способом реализовать это?

+0

Прежде всего вам нужно определить, что такое '' crrentLink'''''''''''''''''''''''''''''' '' '' '' '', т.е. значения для сравнения. – ArtisticPhoenix

ответ

0

, чтобы узнать имя текущего каталога вам нужно:

basename(getcwd()) 

в Еогеасп использования цикла это:

if(basename($nav) == basename(getcwd())) 
{ 
// add span class 
} 
1

Да, вы правы, что вам нужно, если условие в цикле. Сохраните текущую ссылку в переменной перед циклом.

<?php 
$dirs = array_filter(glob('../*'), 'is_dir'); 
?> 

<ul style="float:left;"> 
<?php 
$currentlink='abc'; 
foreach ($dirs as $nav) { 
    if($nav==$currentlink) 
     $class='current'; 
    else 
     $class=''; 
    echo "<li><a class='$class' href='$nav'>".basename($nav)."</a></li>"; 
} 
1

Не зная переменных CompAir, синтаксис мудрый вы хотите сделать что-то вроде этого

<?php 
    foreach ($dirs as $nav){ 
     $class = ''; 
     if($currentLink == $thisLink) { 
       $class = 'class="highlight"'; 
     } 
     echo '<li><a href="'.$nav.'" '.$class.' >'.basename($nav).'</a></li>'; 
    } 
?> 

Вы можете посмотреть в $_SERVER, чтобы получить текущий URL в браузере и использовать некоторые из этого и базовое имя для заполнения этих переменных.

http://php.net/manual/en/reserved.variables.server.php

0

Сначала вы должны получить текущую ссылку. Хранить как $ current_link

<?php 
$dirs = array_filter(glob('../*'), 'is_dir'); 
$current_dir = 'store current directory here'; 
?> 

<ul style="float:left;"> 

<?php 
foreach ($dirs as $nav) { 
    if($nav == $current_dir) { 
     $class_name = 'active'; 
    } 
    else { 
     $class = ''; 
    } 
    echo "<li class='$class'><a href='$nav'>".basename($nav)."</a></li>"; 
} 
?> 
</ul> 

Надеюсь, что это сработает.

Смежные вопросы