2010-10-14 10 views
3

J'ai un fichier csv que je veux utiliser avec php. La première chose dans le csv sont les noms de colonnes. Tout est séparé par des virgules. Je veux être en mesure de mettre les noms de colonne comme nom de tableau et toutes les valeurs de cette colonne seraient sous ce nom de tableau. Donc, s'il y avait 20 lignes sous column1 alors je pourrais faire column1 [0] et la première instance (pas le nom de la colonne) afficherait column1.parse csv fichier php

Comment est-ce que je ferais cela?

Répondre

9

Vous voulez fgetcsv il obtiendra chaque ligne du fichier CSV sous forme de tableau. Puisque vous voulez avoir chaque colonne dans son propre tableau, vous pouvez extraire des éléments de ce tableau et l'ajouter à de nouveaux tableaux représentant des colonnes. Quelque chose comme:

$col1 = array(); 
while (($row = fgetcsv($handle, 1000, ",")) !== FALSE) { 
    $col1[] = $row[0]; 
} 

Alternativement, vous pouvez lire le fichier entier CSV à l'aide fgetcsv dans une matrice 2D (à condition que le fichier CSV est pas trop grand) comme:

$matrix = array(); 
while (($row = fgetcsv($handle, 1000, ",")) !== FALSE) { 
    $matrix[] = $row; 
} 

puis extraire les colonnes vouloir dans leurs propres tableaux comme:

$col1 = array(); 
for($i=0;$i<count($matrix);$i++) { 
    $col1[] = $matrix[0][i]; 
} 
+0

J'ai essayé fgetcsv mais il ne le met pas dans les tableaux de nom de colonne. – keith

+0

J'ai ajouté plus de détails. – codaddict

+0

Merci pour la réponse. Ce n'est pas vraiment ce que j'espérais. Y at-il un moyen pour qu'il sache que la première ligne dans le csv sont les noms de colonnes et chaque ligne après que ce sont les lignes? Et les virgules séparent chaque colonne pour chaque rangée? – keith