2016-05-27 4 views
0

Ich habe ein Skript, das alle Verzeichnisse als Links auflistet.So markieren Sie den aktuellen Link in der foreach-Schleife

<?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> 

Ich möchte das aktuelle Verzeichnis hervorheben, oder geben Sie dem aktuellen Link eine Klasse oder ID. Ich verstehe, dass ich brauche, wenn Anweisung, um dies wie if(currentLink=thisLink) { // add span class somehow} else {// continue looping} zu erreichen, aber ich bin mir nicht ganz sicher, wie dies zu tun ist.

Was wäre der richtige Weg, dies zu implementieren?

+0

Zunächst müssen Sie identifizieren, was "crrentLink" ist und was "thisLink" ist, dh. die zu vergleichenden Werte. – ArtisticPhoenix

Antwort

0

zu den aktuellen Verzeichnisnamen Sie müssen herausfinden:

basename(getcwd()) 

in foreach-Schleife verwenden diese:

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

Ja, Sie haben Recht, müssen Sie, wenn die Bedingung in der Schleife. Speichern Sie Ihre aktuelle Verknüpfung in einer Variablen vor der Schleife.

<?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

Ohne die Variablen compair zu wissen, Syntax weise wollen Sie so etwas wie diese

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

Sie in $_SERVER aussehen können tun, um die aktuelle URL im Browser zu bekommen und einige davon und die Verwendung Basisnamen, um diese Variablen ausfüllen.

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

0

Zuerst aktuellen Link zu bekommen. Speichern als $ 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> 

Ich hoffe, es wird funktionieren.