如何突出foreach循环中的当前链接

时间:2016-05-27 12:27:24

标签: php html if-statement 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>

我想突出显示当前目录,或者为当前链接提供类或ID。我理解我需要if语句来完成这个if(currentLink=thisLink) { // add span class somehow} else {// continue looping},但我不完全确定如何做到这一点。

实现这个的正确方法是什么?

4 个答案:

答案 0 :(得分:1)

是的,如果你的循环中有条件,你是对的。 在循环之前将当前链接保存在变量中。

clear color

答案 1 :(得分:1)

在不知道变量的情况下,语法方面你想做类似的事情

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

您可以查看$_SERVER以获取浏览器中的当前网址,并使用其中一些和基本名称来填充这些变量。

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

答案 2 :(得分:0)

找出你需要的当前目录名称:

basename(getcwd())
foreach循环中的

使用:

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

答案 3 :(得分: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>

希望它能奏效。