PHP动态面包屑

时间:2010-04-08 11:31:35

标签: php dynamic hyperlink breadcrumbs

我从某人那里得到了这个代码并且它运行得很好,我只是想从数组的最后一个元素中删除链接:

//get rid of empty parts
$crumbs = array_filter($crumbs);

$result = array();
$path = '';
foreach($crumbs as $crumb){
    $path .= '/' . $crumb;
    $name = ucfirst(str_replace(array(".php","_"),array(""," "), $crumb));
    $result[] = "<a href=\"$path\">$name</a>";

}

print implode(' > ', $result);

这将输出例如: 内容&gt;常见&gt;文件

我只想删除最后一项的链接 - “文件”只是纯文本.. 我试着计算数组项目,然后如果数组项目是最后一项,那么打印为纯文本最后一项..但我仍然是菜鸟,我没有设法得到一个正确的结果..

谢谢!

3 个答案:

答案 0 :(得分:2)

这应该有效:

$crumbs = array_filter($crumbs);

$result = array(); $path = '';
//might need to subtract one from the count...
$count = count($crumbs);
foreach($crumbs as $k=>$crumb){
     $path .= '/' . $crumb;
     $name = ucfirst(str_replace(array(".php","_"),array(""," "), $crumb));
     if($k != $count){
         $result[] = "<a href=\"$path\">$name</a>";
     } else {
         $result[] = $name;
     }
}

print implode(' > ', $result);

答案 1 :(得分:1)

您可以简单地调整现有代码以使用“普通”循环(而不是foreach迭代器)来实现此目的。

例如:

//get rid of empty parts
$crumbs = array_filter($crumbs);

$result = array();
$path = '';
$crumbCount = count($crumbs);
for($crumbLoop=0; $crumbLoop<$crumbCount; $crumbLoop++) {
    $path .= '/' . $crumbs[$crumbLoop];
    $name = ucfirst(str_replace(array(".php","_"),array(""," "), $crumbs[$crumbLoop]));
    $result[] = ($crumbLoop != $crumbCount -1) ? "<a href=\"$path\">$name</a>" : $name;
}

print implode(' > ', $result);

N.B:我目前无法访问PHP,因此上述内容可能没有错误,但您应该明白这一点。

答案 2 :(得分:0)

for($i=0;$i< sizeof($crumbs);$i++) {
   $path .= '/' . $crumbs[$i];
   $name = ucfirst(str_replace(array(".php","_"),array(""," "), $crumbs[$i]));

   if ($i != sizeof($crumbs)-1) {
      $result[] = "<a href=\"$path\">$name</a>";
   }else {
      $result[] = $name;
   }
}