2010-04-08 36 views
0

我從別人的代碼,它工作得非常好,我只是想從數組的最後一個元素刪除鏈接:PHP動態麪包屑

//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); 

這將輸出例如: 內容>常見>文件

我只想刪除從最後一個項目的鏈接 - 「文件」,只是純文本.. 我想自己算陣列項目,然後如果數組項是最後一個再到作爲純文本打印最後一個項目..但我仍然noob,我沒有設法得到一個正確的結果..

謝謝!

回答

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); 
+0

這是完美的謝謝!假設你的數組索引爲0 - > N – 2010-04-08 11:45:14

+0

(15個字符) – SeanJA 2010-04-08 11:45:19

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,因此上述可能不無錯,但你應該明白我的意思。

+0

謊言! – SeanJA 2010-04-08 11:42:00

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; 
    } 
}