2015-07-03 42 views
0

我正在構建麪包屑,我想從當前網址的所有網段中執行此操作。 我收到看起來像這樣PHP,將每個數組項目與以前的項目相結合

$segments = [0 =>'users', 
      1 =>'index', 
      2 =>'all']; 

我想在這樣的陣列組合陣列:使用array_map

  $segs = array_map(function($a){return $a."/".$a;},$segments); 

$routes = [ 0 =>'users', 
      1 =>'users/index', 
      2 =>'users/index/all']; 

我都試過,但它結合相同的陣列項目兩次

任何幫助表示讚賞。

+3

你試過了什麼 –

+0

創建一個遍歷數組的循環,連接當前字符串並將該值添加到新數組。 – Jerodev

回答

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 
) 
+0

array_slice是我錯過了。謝謝,解決了它。 –

+0

@ДимитърБиков不客氣。祝你有美好的一天:) – Rizier123

0

如果你想使用array_map()一樣@Rizier123's方法去做,

$segments = ['users','index','all']; 

$routes = array_map(function($v, $k) use ($segments){ 
      return implode('/', array_slice($segments, 0, ($k+1))); 
     }, $segments, array_keys($segments)); 
+1

你可能還想初始化'$ till_now' – Rizier123

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; 
} 
相關問題