csv到php读取整个目录

时间:2015-03-03 13:35:10

标签: php csv

有没有办法利用这个脚本?但它不是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);  

?> 

1 个答案:

答案 0 :(得分: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()