2010-06-10 5 views
2

J'ai un tableau $rows où chaque élément est une rangée de 15 valeurs délimitées par des tabulations. Je veux exploser $rows dans un tableau 2D $rowData où chaque ligne est un élément de tableau et chaque valeur délimitée par des tabulations est affectée à un élément de tableau différent. J'ai essayé ces deux méthodes sans succès. Je sais que le premier a une erreur de codage mais je ne sais pas comment le corriger. Toute aide serait incroyable.Définir tableau 2D avec des boucles dans php

for ($i=0; $i<count($rows); $i++){ 
    for ($j=0; $j<15; $j++){ 
    $rowData = array([$i] => array (explode(" ", $rows[$j]))); 
    } 
} 

foreach ($rows as $value){ 
    $rowData = array(array (explode(" ", $rows[$value]))); 
} 

Répondre

5
$rowData = array(); 
foreach($rows as $value) { 
    $rowData[] = explode("\t", $value); 
} 
+0

Ça a marché, merci beaucoup! – Michael

2
for ($j=0; $j<15; $j++) { 
    $rowData[$j] = explode("\t", $rows[$j]); 
} 

Pour développer: Le problème avec le code suivant:

$rowData = array([$i] => array (explode(" ", $rows[$j]))); 

est que vous ne semblez pas savoir quelles sont les différentes choses que vous avez écrit signifient précisément.

Un appel à array() renvoie un nouveau tableau avec les éléments indiqués. Donc array (explode(" ", $rows[$j])) donne un tableau avec un seul élément, à savoir le tableau retourné par explode(). Et vous enveloppez cela dans un autre appel à array(), en spécifiant la variable de boucle $i comme la clé correspondant à cet élément. En outre, vous utilisez le symbole d'affectation =, ce qui signifie que chaque fois que vous passez par la boucle, $rowData est complètement écrasé - ce que vous vouliez était d'ajouter de nouveaux éléments sans se débarrasser des anciens.

+0

Merci pour cette explication, je n'ai pas réalisé bêtement que j'appelais même une fonction array(). Très instructif! – Michael