我正在提取 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>
我正在提取 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>
$answer = '';
foreach ($path as $path_part){
$answer .= '/'.$path_part;
print('<a href="'.$answer.'">'.$path_part.'</a>');
}
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";
});
您可以使用 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 文档!
您可以使用 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]);
}