如何以递归方式从数组中减去?

时间:2010-02-01 03:07:26

标签: php arrays breadcrumbs

我正在拉取url参数,我正在尝试从中创建一个面包屑。所以,如果我拉:

$url = 'contact/jane/now';

我做了:

$path = explode("/",$url);

如何将它放在循环中,以便将每个部分分成如下路径:

<a href="/contact">contact</a>
<a href="/contact/jane">jane</a>
<a href="/contact/jane/now">now</a>

4 个答案:

答案 0 :(得分:4)

$answer = '';
foreach ($path as $path_part){
 $answer .= '/'.$path_part;
 print('<a href="'.$answer.'">'.$path_part.'</a>');
}

答案 1 :(得分:2)

Pre PHP 5.3:

array_reduce($path, create_function('$a, $b', '
    echo "<a href=\"$a/$b\">$b</a>\n";

    return "$a/$b";
'));

在PHP 5.3中:

array_reduce($path, function($a, $b) {
    echo "<a href=\"$a/$b\">$b</a>\n";

    return "$a/$b";
});

答案 2 :(得分:0)

你可以使用For,For Each,Do,Do While,While。真的无论你想要什么。 http://php.net/manual/en/control-structures.for.php 当你爆炸时,它会把它变成一个字符串数组 http://us.php.net/manual/en/function.explode.php

因此,只需使用count()方法并确定数组中有多少元素 http://us.php.net/manual/en/function.count.php

然后继续循环并一次阅读一个。如果你想从最后开始然后再往后,你只需更改你的循环就可以在数组的计数处初始化,然后每次从你的计数器中减去一个。否则,就这样做吧。

可以查看PHP文档!

答案 3 :(得分:0)

你可以使用array_slice 代码没有经过实际测试,但我希望你能得到这个想法

...
$url   = explode('/', $url);
$links = array();

for ($i = 0; $i < count($url); $i++) {
    $crumb    = ($i > 0) ? implode('/', array_slice($url, 0, $i)) .'/' : $url[$i] .'/';
    $links[]  = sprintf('<a href="%s">%s</a>', $crumb . $url[$i], $url[$i]);
}