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

Résolu
Blanc57 Messages postés 377 Statut Membre -  
Blanc57 Messages postés 377 Statut Membre -
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.

2 réponses

  1. Flachy Joe Messages postés 2303 Statut Membre 261
     
    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
  2. Blanc57 Messages postés 377 Statut Membre 73
     
    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