我正在构建面包屑,我想从当前网址的所有细分中进行处理。 我得到的数组看起来像这样
$segments = [0 =>'users',
1 =>'index',
2 =>'all'];
我想以这种方式组合数组:
$routes = [ 0 =>'users',
1 =>'users/index',
2 =>'users/index/all'];
我尝试过使用array_map
$segs = array_map(function($a){return $a."/".$a;},$segments);
但它将两个相同的数组项组合在一起
感谢任何帮助。
答案 0 :(得分:4)
这应该适合你:
只需循环遍历每个元素,然后从开始直到当前元素为array_slice()
,然后您可以使用斜杠简单地implode()
。
<?php
$segments = ["users", "index", "all"];
foreach($segments as $k => $v)
$result[] = implode("/", array_slice($segments, 0, ($k+1)));
print_r($result);
?>
输出:
Array
(
[0] => users
[1] => users/index
[2] => users/index/all
)
答案 1 :(得分:0)
如果您想使用与array_map()
方法相同的$segments = ['users','index','all'];
$routes = array_map(function($v, $k) use ($segments){
return implode('/', array_slice($segments, 0, ($k+1)));
}, $segments, array_keys($segments));
<body>
<div ui-view="child1"></div>
<div ui-view="child2"></div>
<div ui-view="child3"></div>
</body>
答案 2 :(得分:0)
使用此代码解决此问题:
$arr = array(0 =>'users', 1 =>'index', 2 =>'all');
print_r(returnPath($arr));
function returnPath($urlArr = null){
$index = 1; $sep='';
$length = count($urlArr);
foreach($urlArr as $key => $item){
if($index > 1 && $index < $length){ $sep = '/'; }
$temp .= $sep.$item;
$urlArr[$key] = $temp;
$index++;
}
return $urlArr;
}