2010-07-07 180 views
1

我有一个这样的数组(一名维只):PHP:简单的数组操作

 
$arr = array('one', 'two', 'three', 'foo', 'bar', 'etc'); 

现在我需要一个for()循环,创建一个从$arr一个新的阵列,这样的:

 
$newArr = array('one', 'onetwo', 'onetwothree', 'onetwothreefoo', 'onetwothreefoobar', 'onetwothreefoobaretc'); 

似乎很简单,但我无法弄清楚。

在此先感谢!

回答

10
$mash = ""; 
$res = array(); 

foreach ($arr as $el) { 
    $mash .= $el; 
    array_push($res, $mash); 
} 
+0

尼斯,干净和简单 – 2010-07-07 07:41:52

+0

也许它会是如果我使用$ RES [] = $捣烂,甚至更好。但这是一个真正的PHPism :-p。无论如何感谢恭维。 – Borealid 2010-07-07 07:50:09

+0

你实际上可以做'$ res [] =($ mash。= $ el);'并保存一整行。 :P尽管如此,我宁愿'array_push'上的'[]'语法。 – deceze 2010-07-07 07:52:34

0
$newArr = array(); 
$finish = count($arr); 
$start = 0; 
foreach($arr as $key => $value) { 
    for ($i = $start; $i < $finish; $i++) { 
     if (isset($newArray[$i])) { 
     $newArray[$i] .= $value; 
     } else { 
     $newArray[$i] = $value; 
     } 
    } 
    $start++; 
} 
+0

你可以做$ newArray = array_fill(0,$ finish,'');在开始的时候,如果保存,如果 – Lombo 2010-07-07 07:42:54

+0

@Lombo - 真的够了,摆脱循环中的if会使它更有效率......但遵循Borealid的高效答案,我只是提供了一个基本的选择而不是一个严肃的方法 – 2010-07-07 07:55:07