2012-11-15 4 views
1

Je lis un fichier excell avec php. Pas de problème avec ça mais je suis coincé sur une petite partie logique. Je veux faire un tableau qui contient plusieurs autres tableaux avec des données.php boucle logique pas à pas

Les données sont fournies dans mon fichier excell Je sais de quelle colonne devrait commencer à lire mais pas quand arrêter car c'est dynamique.

Ma question est comment peut faire une boucle qui lit mes colonnes et fait sur chaque 5ème colonne un nouveau tableau.

donc ce que je veux est quelque chose comme ceci:

(My data for the excell file is proved in $line[] each column has its number.) 
     array(
     'length' => $line[15], 
     'width' => $line[16] 
     'price_per' => $line[17], 
     'price' => $line[18], 
     'stock' => $line[19] 
    ), 
    array(
     'length' => $line[20], 
     'width' => $line[21] 
     'price_per' => $line[22], 
     'price' => $line[23], 
     'stock' => $line[24] 
    ), 
    array(
     'length' => $line[25], 
     'width' => $line[26] 
     'price_per' => $line[27], 
     'price' => $line[28], 
     'stock' => $line[29] 
    ), .... 

Alors, comment puis-je faire cette dynamique (boucle?) Pour que j'ai 1 grand tableau indexé, avec plusieurs tableaux asscociated? Note: ma boucle for devrait toujours être en étoile depuis la ligne [15]!

Répondre

1
for($i = 15; $i < ????; $i += 5) 
{ 
    $your_array[] = array(
     'length' => $line[$i], 
     'width' => $line[$i+1] 
     'price_per' => $line[$i+2], 
     'price' => $line[$i+3], 
     'stock' => $line[$i+4] 
    ); 
} 

Remplacer ???? par le nombre de lignes

6

Pour commencer, si $line a des éléments que vous ne voulez pas traiter (par exemple, les 15 premiers comme exemple indique), les couper en tranches avec de array_slice:

$line = array_slice($line, 15); 

ensuite, utilisez array_chunk de diviser votre tableau original en autant de morceaux qu'il y a:

$chunks = array_chunk($line, 5); 

ensuite, mettez chaque morceau dans son propre tableau en associant chaque valeur à la clé correcte à l'aide array_combine:

$results = array(); 
$keys = array('length', 'width', 'price_per', 'price', 'stock'); 
foreach ($chunks as $chunk) { 
    $results[] = array_combine($keys, $chunk); 
} 
+0

Je l'aime, il aurait à supprimer les trois premiers tableaux (quoique dans son cas particulier) – Bgi

+0

+1 Merde, exactement comment je réécris ma réponse; ne pas oublier de découper le tableau de l'index 15 en premier :) –

+1

@Bgi: Edité pour en tenir compte, merci. – Jon