【发布时间】:2019-03-25 08:50:46
【问题描述】:
我们有这个遥测设备,它通过将 csv 文件发送到我们的服务器来更新数据。 数据将在 csv 文件中每 15 分钟自动更新一次。 每天都会上传一个新的 csv 文件。 该文件每个月都会存储在一个文件夹中,这意味着设备将自动创建一个新文件夹。 (例如文件路径:..\database\AWLR\2018\10)
CSV 文件名是日期格式(例如:20181002.CSV)。 有时数据不会更新,因为我们将设备放置在偏远地区,所以如果可能的话,我想显示最新的数据。
我想在网站的表格中自动显示最新数据。 我尝试使用 php 在数组中打开 csv 文件,但代码只显示 csv 文件的第一行(最旧的数据),而我想显示最后一行(最新的数据)。
我尝试过的代码
$files_location = "database/";
function latest_file_Name ($files_location) {
$openDir = opendir($files_location);
while (false !== ($fileName = readdir($openDir))) {
if($fileName != "." && $fileName != "..")
{
$list[date("YmdHis ", filemtime($files_location.$fileName))]=$fileName;
}
}
rsort($list);
$last_file =array_shift($list);
return $last_file;
}
$last_file_in_folder = latest_file_Name($files_location);
pre_r($last_file_in_folder);//newest file name
$f_pointer=fopen("database/".$last_file_in_folder,"r"); // file pointer
$ar=fgetcsv($f_pointer);
pre_r($ar);//display data of newest file in array
有没有办法使用 php 或任何其他语言/方法显示最新数据? 任何帮助将不胜感激
这里是 csv 文件的链接csv
我已经解决了,谢谢大家
【问题讨论】:
-
您只阅读第一行,所以当然这就是您所得到的。然后在循环中读取所有这些 - 然后访问最后一个的值。
-
谢谢,我理解这个概念,我已经尝试使用 while 循环来读取所有数组,但我无法访问最后一行,因为数组键总是重置为 0。
-
你在说什么数组键?像
while($line = fgetscv()) { $data[] = $line; }这样简单的东西应该可以让你得到一个数组中的所有数据,这样你就可以从中选择最后一个项目。 (当然,您可以选择比收集最终不需要的所有数据更复杂的方法,但也许首先尝试让它以这种方式运行。) -
好的,我是 Web 开发新手,如果我不明白逻辑,请见谅。我的意思是,如果我想选择多维数组的最后一项,我需要键(例如:第一个数组的 [0])。当我循环文件时,每一行的数组键总是重置为 [0],所以我不能选择最后一个数组。除了使用数组键之外,还有其他方法可以选择最后一项吗?请帮忙。而且我无法在网站上显示所有数据,因为我们有大约 25 台设备并且会继续增长。我想在一页中显示所有报告。
-
不,它不是重复的,如果我选择文件名,我可以显示最后一行。这是另一种情况。