2017-02-22 23 views
-1

私は事前作成配列

にこの

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

Txanksよう

+0

パターンがあるかどうかはわかりませんが、私たちに教えてください。 – arkascha

答えて

3

これを見ていきます別の配列を作成する必要があり、この

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

ように見えるいくつかの配列を持っています原始的なアプローチになります:

<?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(内部サーバーエラー)が発生した場合は、まず、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))); 
関連する問題