2010-07-07 175 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