2017-02-22 7 views
-1

У меня есть массив, который похож на этотСоздание массива из другого PHP массива

$links =array('proizvodi','pokloni', 'kuhinja'); 

Мне нужно создать еще один массив, который будет выглядеть следующим образом

$linksNew =array('proizvodi/','proizvodi/pokloni/', 'proizvodi/pokloni/kuhinja/'); 

Txanks заранее

+0

Мы не можем сказать вам, есть ли образец, вы должны нам сообщить. – arkascha

ответ

3

Этот был бы примитивным подходом:

<?php 
$input = ['proizvodi','pokloni', 'kuhinja']; 
$output = []; 
$previous = ''; 
foreach ($input as $entry) { 
    $output[] = $previous . $entry . '/'; 
    $previous = end($output); 
} 
var_dump($output); 

Это версия некоторые могли бы рассмотреть немного более элегантна:

<?php 
$input = ['proizvodi','pokloni', 'kuhinja']; 
$output = []; 
$previous = ''; 
array_walk($input, function($entry) use (&$previous, &$output) { 
    $output[] = $previous . $entry . '/'; 
    $previous = end($output); 
}); 
var_dump($output); 

Выход обеих версий очевидно:

array(3) { 
    [0]=> 
    string(10) "proizvodi/" 
    [1]=> 
    string(18) "proizvodi/pokloni/" 
    [2]=> 
    string(26) "proizvodi/pokloni/kuhinja/" 
} 
+0

Я получаю ошибку сервера 500, это php 7 –

+0

Работает для меня без проблем. Если вы столкнулись с http-статусом 500 (внутренняя ошибка сервера), первое, что нужно сделать _always_: загляните в файл журнала ошибок http-серверов. Вот где вы можете прочитать, что такое _специфическая проблема. – arkascha

0

Пытаясь придумать дождевик пути, но это работает:

for($i=0; $i<count($links); $i++) { 
    $linksNew[] = implode('/', array_slice($links, $i)) . '/'; 
} 
$linksNew = array_reverse($linksNew); 
1

Это был бы подход без петли for или foreach

$links = array('proizvodi','pokloni', 'kuhinja'); 

$newLinks = array_map(function($i) use ($links) { 

    return implode(array_slice($links, 0, $i), '/') . '/'; 

}, range(1, count($links))); 
Смежные вопросы