PHP,将每个数组项与前面的数组项相结合
我正在构建面包屑,我想从当前url的所有片段中创建面包屑。 我得到的数组看起来像这样PHP,将每个数组项与前面的数组项相结合,php,arrays,Php,Arrays,我正在构建面包屑,我想从当前url的所有片段中创建面包屑。 我得到的数组看起来像这样 $segments = [0 =>'users', 1 =>'index', 2 =>'all']; 我希望以这种方式组合阵列: $routes = [ 0 =>'users', 1 =>'users/index', 2 =>'users/index/all']; 我试过使
$segments = [0 =>'users',
1 =>'index',
2 =>'all'];
我希望以这种方式组合阵列:
$routes = [ 0 =>'users',
1 =>'users/index',
2 =>'users/index/all'];
我试过使用数组映射
$segs = array_map(function($a){return $a."/".$a;},$segments);
但它将同一数组项组合两次
非常感谢您的帮助。这应该对您有用: 只需循环遍历每个元素,从开始到当前元素取一个值,然后只需用斜杠即可
<?php
$segments = ["users", "index", "all"];
foreach($segments as $k => $v)
$result[] = implode("/", array_slice($segments, 0, ($k+1)));
print_r($result);
?>
这应该适合您: 只需循环遍历每个元素,从开始到当前元素取一个值,然后只需用斜杠即可
<?php
$segments = ["users", "index", "all"];
foreach($segments as $k => $v)
$result[] = implode("/", array_slice($segments, 0, ($k+1)));
print_r($result);
?>
如果您想使用与@method相同的
array\u map()
来执行此操作
如果您想使用与@method相同的
array\u map()
来执行此操作
使用以下代码修复此问题:
$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;
}
$arr=array(0=>'users',1=>'index',2=>'all');
打印(返回路径($arr));
函数返回路径($urlArr=null){
$index=1;$sep='';
$length=计数($urlArr);
foreach($urlArr作为$key=>$item){
如果($index>1&&$index<$length){$sep='/';}
$temp.=$sep.$item;
$urlArr[$key]=$temp;
$index++;
}
返回$urlArr;
}
使用此代码修复此问题:
$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;
}
$arr=array(0=>'users',1=>'index',2=>'all');
打印(返回路径($arr));
函数返回路径($urlArr=null){
$index=1;$sep='';
$length=计数($urlArr);
foreach($urlArr作为$key=>$item){
如果($index>1&&$index<$length){$sep='/';}
$temp.=$sep.$item;
$urlArr[$key]=$temp;
$index++;
}
返回$urlArr;
}
创建一个遍历数组的循环,连接当前字符串并将值添加到新数组中。创建一个遍历数组的循环,连接当前字符串并将值添加到新数组中。我缺少的是数组切片。谢谢,解决了。我缺少的是数组。谢谢,已解决。您可能还需要初始化$till\u now
您可能还需要初始化$till\u now