我有一些看起来像这样的数组
$links =array('proizvodi','pokloni', 'kuhinja');
我需要创建另一个看起来像这样的数组
$linksNew =array('proizvodi/','proizvodi/pokloni/', 'proizvodi/pokloni/kuhinja/');
提前Txanks
答案 0 :(得分: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/"
}
答案 1 :(得分: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)));
答案 2 :(得分:0)
试着想出一种更流畅的方式,但这很有效:
for($i=0; $i<count($links); $i++) {
$linksNew[] = implode('/', array_slice($links, $i)) . '/';
}
$linksNew = array_reverse($linksNew);