2010-04-08 2 views
0

Я получил этот код от кого-то, и она работает очень хорошо, я просто хочу, чтобы удалить ссылку из последнего элемента массива:PHP Dynamic Иерархическая

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

Это выведет, например: Content> Общие > Файл

Я просто хочу, чтобы удалить ссылку из последнего элемента - «Файл», чтобы быть просто текстовым. Я пробовал отсчитывать элементы массива, а затем, если элемент массива является последним, тогда напечатайте как обычный текст последний элемент .. но я все еще 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

Предполагая, что ваш массив проиндексирован 0 -> N – SeanJA

1

Вы можете просто настроить существующий код, чтобы использовать «нормальный» цикл (а не Еогеасп итератор) для достижения этой цели.

Например:

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

лежит! (15 символов) – SeanJA

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