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