csv to php читать весь каталог

0

Есть ли способ использовать этот скрипт? но вместо 1 файла он читает целую директорию? а затем показывает это на веб-странице? на данный момент он показывает только 1 CSV файл. Я не знаю, могу ли я использовать glob для этого. мои знания php улучшаются, но я все еще ужасен в этом. XD

<?PHP  

$file_handle = fopen("../test.csv", "r");  

while (!feof($file_handle) ) {  

$line_of_text = fgetcsv($file_handle, 1024);  

                echo '<tr><td>' . $line_of_text[0] . '</td><td>' . $line_of_text[1] . '</td><td>' . $line_of_text[2] . '</td><td>' . $line_of_text[3] . '</td><td>' . $line_of_text[4] . '</td></tr>'; 

                }  

fclose($file_handle);  

?> 
  • 0
    Целый каталог содержит файлы CSV, и вы хотите отобразить содержимое всех файлов CSV в 1 каталоге на веб-странице в виде таблицы?
  • 0
    да, именно это. и также хотят, чтобы они были разделены, хотя это, вероятно, невозможно.
Теги:
csv

1 ответ

0
Лучший ответ

Да, вы можете использовать glob для извлечения списка файлов в вашем каталоге, а затем прокручивать их с помощью foreach() и использовать существующий код.

<?php

$arrFiles = glob("../*.csv");
foreach($arrFiles as $strFileName) {
   $file_handle = fopen($strFileName, "r");  
   while (!feof($file_handle) ) {  
      $line_of_text = fgetcsv($file_handle, 1024);  
      echo '<tr><td>' . $line_of_text[0] . '</td><td>' . $line_of_text[1] . '</td><td>' . $line_of_text[2] . '</td><td>' . $line_of_text[3] . '</td><td>' . $line_of_text[4] . '</td></tr>'; 
   }  
   fclose($file_handle);  
}

Вы можете ограничить количество файлов, которые вы открываете и закрываете, а не открывать все файлы в этом каталоге - или кэшировать результаты.

Чтобы ограничить количество открываемых файлов, вы можете использовать array_slice;

$arrFiles = glob("../*.csv");
$arrFiles = array_slice($arrFiles, 0, 10); //Limit to 10 files

Сортировка результатов на основе изменения даты

Что вам нужно сделать, это захватить список файлов, затем получить их последнее измененное время, а затем отсортировать этот массив. Например:

$arrFiles = glob("../*.csv");
$arrSortedFiles = array();
foreach($arrFiles as $strFileName) {
   $arrSortedFiles[$strFileName] = filemtime($strFileName);
}
natsort($arrSortedFiles); //Sort naturally. Oldest first. 
foreach(array_keys($arrSortedFiles) as $strFileName) {
     //...
} 

Если, однако, вы хотите, чтобы сортировка была наоборот - сначала самая новая - тогда просто используйте array_reverse().

  • 1
    вы должны использовать $strFileName вместо ../test.csv
  • 0
    Это работает, и ты прав, я должен ограничиться этим. это возможно с ломтиком массива?
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню