PHP упорядочивает содержимое таблицы от горизонтального до вертикального - PullRequest
0 голосов
/ 04 августа 2010

У меня есть скрипт, который читает файл 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>';
 ?>

Этот скрипт просто берет данные и печатает их в HTML-таблице.Я просто хочу переставить стол.Например, CSV может иметь это содержимое

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

Я хочу, чтобы выход:

0 0 0 0

1 1 1 1

2 2 2 2

3 3 3 3

4 4 4 4

и продолжай ... Мне кое-что нужно поставить дополнительную петлю ..как я могу это сделать?

Ответы [ 2 ]

0 голосов
/ 05 августа 2010

Ну, вы бы прочитали CSV-файл в многомерный массив.

Учтите, что каждая строка в CSV-файле теперь является столбцом (идет вверх-вниз, а не слева-направо).Это называется транспонированием строк в столбцы.

Для таблицы вам нужно циклически проходить по каждой строке, а не по каждому столбцу.Итак, вы создаете цикл внутри цикла, как показано здесь:

<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>

Попробуйте и дайте мне знать, если он работает.

0 голосов
/ 04 августа 2010

Я не совсем уверен, как устроен ваш CSV-файл, но похоже, что вам может понадобиться сохранить эти значения в отдельных массивах для разных цифр, а затем перебрать эти массивы после того, как вы закончите читать весь CSV-файл.файл.Можете ли вы показать краткий пример файла CSV, чтобы я мог получить представление о данных, которые вы читаете?

...