从另一个数组php创建数组

时间:2017-02-22 18:47:06

标签: php arrays

我有一些看起来像这样的数组

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

我需要创建另一个看起来像这样的数组

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

提前Txanks

3 个答案:

答案 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);