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