[英]PHP: Count array items and then remove '../' foreach array item
好的,有點難以解釋,但是我想做的是為我的網站創建一個子標題。 子標題將基於當前URL,以sub/test/3rdleveldown/blog/post
為例。 我需要子標題要做的是,為該URL的每個級別創建一個單獨的鏈接
示例:這將產生:
<a href="../../../../sub">Sub</a> >> <a href="../../../test">Test</a> >> <a href="../../3rdleveldown">3rdleveldown</a> >> <a href="blog">blog</a>
這將允許用戶輕松地降低URL級別。
我設法做到的是
<div class="subheader">
<?php
$uri = $_SERVER['REQUEST_URI'];
$array = explode('/', $uri);
$count = count($array);
?>
@foreach ($array as $sub)
<a href="NOW HERE I NEED TO ENTER the ../ based on how far down the link is in the array {{ $sub }}">{{ $sub }}</a> >>
@endforeach
</div>
有人可以幫助我降低每個級別的../
嗎?
應該是這樣的:
<?php
$path="sub/test/3rdleveldown/blog/post";
$arr = explode("/",$path);
array_pop($arr);
$sarr = sizeof($arr);
$count = 0;
$links = Array();
while ($count < $sarr) {
$myhref = "<a href=\"";
/*
This will add the neccessary number of ../
*/
for($i=1;$i<=($sarr-$count);$i++) $myhref .= "../";
$myhref .= $arr[$count] . "\">" . ucfirst($arr[$count]) . "</a>";
echo $myhref;
array_push($links, $myhref);
$count++;
}
print_r($links);
?>
運行此代碼,您將獲得
Array
(
[0] => <a href="../../../../sub">Sub</a>
[1] => <a href="../../../test">Test</a>
[2] => <a href="../../3rdleveldown">3rdleveldown</a>
[3] => <a href="../blog">Blog</a>
)
我相信這是您所需要的。
想通了,可能有更好的方法可以做到,但這應該可以。
<div class="subheader">
<?php
$uri = $_SERVER['REQUEST_URI'];
$breadcrums = explode('/', $uri);
array_pop($breadcrums);
$count = count($breadcrums);
--$count;
$crumlevel = '';
$ocount = $count;
?>
@foreach ($breadcrums as $breadcrum)
<?php
for($count; !$count == 0 ; $count--){
$crumlevel = '../'.$crumlevel;
}
$count = --$ocount;
?>
<a href="{{ $crumlevel.$breadcrum }}">{{ $breadcrum }}</a> >>
<?php $crumlevel = '../' ?>
@endforeach
</div>
您可以簡單地在$request
變量上使用segments
方法。
$segments_arr = request()->segments();
// It would give you an array of URL sub-parts as:
// ['Sub', 'test', '3rdleveldown'];
然后,您可以自己操作該數組。 產生正在使用的鏈接的技巧是一種方法,或者您可以簽出其他Laravel軟件包來創建面包屑。
更新
在遍歷segments數組時,可以使用request的request()->root()
創建鏈接。
$root_path = request()->root();
foreach($segments_arr as $segment) {
$href_str = $root_path . '/' . implode('/', array_slice($segments_arr, 0, $key + 1));
}
/* So for example if your root url is - www.example.com, then
the output on $key = 0;
www.example.com/segment1 --- $key = 0
www.example.com/segment1/segment2 --- $key = 1
*/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.