2017-02-22 136 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(內部服務器錯誤),首先要做的事情是:查看您的http服務器錯誤日誌文件。那就是你可以閱讀什麼_specific_問題的地方。 – 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))); 
相關問題