PHP : récupérer données CSV dans array

Résolu/Fermé
Blanc57 Messages postés 366 Date d'inscription vendredi 6 avril 2007 Statut Membre Dernière intervention 27 janvier 2020 - Modifié par Blanc57 le 11/09/2010 à 18:08
Blanc57 Messages postés 366 Date d'inscription vendredi 6 avril 2007 Statut Membre Dernière intervention 27 janvier 2020 - 12 sept. 2010 à 02:07
Bonjour,

Je viens juste de me mettre à PHP car j'ai un travail à rendre pour lequel PHP ferait l'affaire grâce à JPGraph pour la génération de graph de Gantt.

Je cherche à récupérer des données dans un CSV et les exploiter dans un array.
J'en suis là :

$fichier = file("/tmp/2data.txt");
$total = count($fichier);

for($i = 0; $i < $total; $i++)
{
$lin = $fichier[$i];
list($varA, $varB, $varC) = split(';', $lin);
$csvdat = array(
array($i, $varA, $varB, $varC),
);
}

for($j = 0; $j < $total; $j++)
{
$data = array(
array( $csvdat[$j][0], $csvdat[$j][1], $csvdat[$j][2], addTime($csvdat[$j][2], $csvdat[$j][3])),
//array(1," Label 2", "2001-01-26 10:00","08:00"),
//array(2," Label 3", "2001-01-26","10:00")
);
}


mais naturellement, cela ne fonctionne pas.
En fait mes données CSV d'origine sont du type :
LABEL;AAAA-MM-JJ HH:MM;HH:MM

Et je souhaiterais les retrouver dans l'array '$data', un peu comme les exemples commentés ci-dessus.

Merci d'avance à tout ceux qui pourront m'apporter leur aide.

A voir également:

2 réponses

Flachy Joe Messages postés 2103 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 21 novembre 2023 260
11 sept. 2010 à 21:28
Il y a un problème avec le remplissage des tableaux, ça devrait être mieux comme ça :
$fichier = file("/tmp/2data.txt");
$total = count($fichier);

$csvdat = array(); //définition du tableau à remplir

for($i = 0; $i < $total; $i++){
  $lin = $fichier[$i];
  list($varA, $varB, $varC) = split(';', $lin);
  $csvdat[] = array($i, $varA, $varB, $varC); //ajout d'un élément au tableau, l'élément contient un tableau
}

$data = array(); // idem...

for($j = 0; $j < $total; $j++)
  $data[] = array( $csvdat[$j][0], $csvdat[$j][1], $csvdat[$j][2], AddTime($csvdat[$j][2], $csvdat[$j][3]));


Ou alors :
$fichier = file("/tmp/2data.txt");
$total = count($fichier);

$data = array();

for($i = 0; $i < $total; $i++){
  $lin = $fichier[$i];
  list($varA, $varB, $varC) = split(';', $lin);
  $data[] = array( $i,  $varA, $varB,  AddTime($varB, $varC));
}
4
Blanc57 Messages postés 366 Date d'inscription vendredi 6 avril 2007 Statut Membre Dernière intervention 27 janvier 2020 73
12 sept. 2010 à 02:07
Merci beaucoup pour ton aide Flashy Joe, c'est exactement ce qu'il me fallait...

Je me suis encore cassé la tête une heure pour faire tourner JPGraph mais à présent, j'ai réussit à faire ce que je souhaitais et tout fonctionne.

C'est en grande partie grâce à toi car sans ton aide je me serais encore cassé la tête sur cette histoire d'array...

Merci encore.
1