2015-07-03 3 views
0

Я строю панировочные сухари, и я хотел бы сделать это из всех сегментов из текущего URL-адреса. Я получаю массив, который выглядит следующим образомPHP, Сочетание каждого элемента массива с предыдущими

$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

Создайте цикл, который перемещается по массиву, объединяет текущую строку и добавляет значение в новый массив. – 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; 
} 
Смежные вопросы