PHP,将每个数组项与前面的数组项相结合

PHP,将每个数组项与前面的数组项相结合,php,arrays,Php,Arrays,我正在构建面包屑,我想从当前url的所有片段中创建面包屑。 我得到的数组看起来像这样 $segments = [0 =>'users', 1 =>'index', 2 =>'all']; 我希望以这种方式组合阵列: $routes = [ 0 =>'users', 1 =>'users/index', 2 =>'users/index/all']; 我试过使

我正在构建面包屑,我想从当前url的所有片段中创建面包屑。 我得到的数组看起来像这样

$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