Question

J'ai un script qui a lu un fichier CSV.

 <?php
 echo '<table border="0" cellspacing="1" cellpadding="1" class="sortable" border="1"><caption>Title Here</caption>
 <thead><tr><th class="header">Time:</th><th class="header">Value 1:</th><th class="header">Value 2:</th><th class="header">Value 3:</td class="header"><th class="header">Value 4:</th><th class="header">Value 5:</th><th class="header">Value 6:</th><th class="header">Value 7:</th><th class="header">Value 8:</th><th class="header">Value 9:</th></tr></thead><tbody><tr>';
 $row = 1;
 if (($handle = fopen("data.csv", "r")) !== FALSE) {
   while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
     $num = count($data);   
     $row++;
     for ($c=0; $c < $num; $c++) {
        if ($c==9) { echo "<td>".$data[$c] ."</td></tr><tr>";}
        else  {echo "<td>".$data[$c] ."</td>"; }
     }
   }
   fclose($handle);
 }
 echo '</tbody></table>';
 ?>

Ce script il suffit de prendre les données et les imprimer dans un tableau html. Je veux juste réorganiser la table. Par exemple, le csv peut avoir ces contenus

0 1 2 3 4 5 6 7

0 1 2 3 4 5 6 7

0 1 2 3 4 5 6 7

0 1 2 3 4 5 6 7

Je souhaite être à:

0 0 0 0

1 1 1 1

2 2 2 2

3 3 3 3

4 4 4 4

et continuer ... Je certains que je dois mettre une boucle supplémentaire .. comment puis-je faire?

Était-ce utile?

La solution

Eh bien, vous devriez lire le fichier CSV dans un tableau multidimensionnel.

Considérez que chaque ligne dans le fichier CSV est maintenant une colonne (monte vers le bas au lieu de gauche à droite). Ceci est appelé Transposer lignes à colonnes.

Pour une table, vous aurez besoin de boucle à travers chaque ligne, et non chaque colonne. Vous créez donc une boucle dans une boucle, comme indiqué ici:

<table border="0" cellspacing="1" cellpadding="1" class="sortable" border="1"><caption>Title Here</caption>
     <thead><tr><th class="header">Time:</th><th class="header">Value 1:</th><th class="header">Value 2:</th><th class="header">Value 3:</td class="header"><th class="header">Value 4:</th><th class="header">Value 5:</th><th class="header">Value 6:</th><th class="header">Value 7:</th><th class="header">Value 8:</th><th class="header">Value 9:</th></tr></thead><tbody>
<?php
     #read CSV file
     if (($handle = fopen("data.csv", "r")) !== FALSE) {
       $mycsv = array();
       while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) $mycsv[] = $data;
       fclose($handle);


     #Find the length of the transposed row

     $row_length = count($mycsv);

     #Loop through each row (or each line in the csv) and output all the columns for that row
     foreach($mycsv[0] as $col_num => $col)
     {
        echo "<tr>";
        for($x=0; $x<$row_length; $x++)
           echo "<td>".$mycsv[$x][$col_num]."</td>";


        echo "</tr>";
     }

  }
?>
  </tbody></table>

Essayez cela et laissez-moi savoir si cela fonctionne.

Autres conseils

Je ne suis pas sûr de savoir comment votre fichier csv est mis, mais il semble que vous pourriez avoir besoin de stocker ces valeurs dans des tableaux distincts pour les différents chiffres et boucle à travers ces tableaux une fois que vous avez fini de lire l'ensemble csv fichier. Pouvez-vous montrer un bref échantillon du fichier csv je peux avoir une idée des données que vous lisez dans?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top