csv到php读取整个目录


csv to php read entire directory

有办法使用这个脚本吗?但是它读取的不是一个文件而是整个目录?然后在网页上显示?目前它只显示1个csv文件。我不知道我能不能用地球仪。我的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);  
?> 

是的,您可以使用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()