PHP,将每个数组项与前一个数组项组合在一起

时间:2015-07-03 09:46:36

标签: php arrays

我正在构建面包屑,我想从当前网址的所有细分中进行处理。 我得到的数组看起来像这样

$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);

但它将两个相同的数组项组合在一起

感谢任何帮助。

3 个答案:

答案 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;
}