2010-07-07 4 views
1

J'ai un tableau comme celui-ci (une seule dimension):PHP: opération simple tableau

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

Maintenant, je besoin d'une boucle for() qui crée un nouveau tableau de $arr, comme ça:

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

Semble être simple mais je ne peux pas le comprendre.

Merci d'avance!

Répondre

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

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

Nice, propre et simple –

+0

Peut-être que ce serait encore mieux si je l'avais utilisé $ res [] = purée $. Mais c'est un vrai PHPism :-p. Merci pour le compliment, de toute façon. – Borealid

+0

Vous pouvez réellement faire '$ res [] = ($ mash. = $ El);' et enregistrer une ligne entière. : P Je préférerais cependant la syntaxe '[]' à 'array_push'. – deceze

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

Vous pourriez faire $ newArray = array_fill (0, $ finish, ''); au début et sauvez le if – Lombo

+0

@Lombo - Vraiment, et se débarrasser de la si dans la boucle le rendrait plus efficace ... mais après la réponse très efficace de Borealid, je fournissais juste une alternative de base plutôt qu'une méthode sérieuse –