因此,我有这样的设备,它可以创建一个CSV文件并每15分钟更新一次文件中的数据,然后每天将新的csv文件发送到我们的服务器。所以我想在网站上显示最新数据。
我有一行代码可以使用fgetcsv加载文件,但是此代码可以在特定文件夹中打开特定的csv文件。
$f_pointer=fopen("database/student01.csv","r"); // file pointer
$ar=fgetcsv($f_pointer);
print_r($ar);
我想找到一种方法来打开数组中的最新csv文件和数据,以便可以从特定数据中创建表。
我是Web开发的新手,任何有用的资源将不胜感激。谢谢。
我找到了打开目录中最新文件的方法
function pre_r($array) {
echo '<pre>';
print_r($array);
echo '</pre>';
}
$files = scandir('database/AWLR/2018/10', SCANDIR_SORT_DESCENDING);
$newest_file = $files[0];
pre_r($newest_file); //file name
//to open file in array
$f_pointer=fopen("database/AWLR/2018/10/$newest_file","r"); // file pointer
$ar=fgetcsv($f_pointer);
pre_r($ar);
但是此代码在我想打开最后一行时打开了csv文件的第一行(因为它是给定的最新数据)。有没有办法自动更改目录?因为此代码必须每月更新一次
此代码有效,不幸的是,它显示了csv文件的第一行,
$current_year = date('Y');
$current_month = date('m');
$files = scandir("database/AWLR/".$current_year."/".$current_month, 1); // use 0 for ascending order, and 1 for descending order
$newest_file = $files[0];
pre_r($newest_file); //file name
//to open file in array
$f_pointer=fopen("database/AWLR/".$current_year."/".$current_month."/".$newest_file,'r'); // file pointer
$ar=fgetcsv($f_pointer);
pre_r($ar);
有没有办法显示csv文件的最后一行?
这是我正在谈论的csv文件之一
答案 0 :(得分:1)
这是您可以使用和测试的建议代码
$current_year = date('Y');
$current_month = date('m');
$files = scandir("database/AWLR/".$current_year."/".$current_month, 1); // use 0 for ascending order, and 1 for descending order
$newest_file = $files[0];
pre_r($newest_file); //file name
//to open file in array
$f_pointer=fopen("database/AWLR/".$current_year."/".$current_month."/".$newest_file,'r'); // file pointer
$ar=fgetcsv($f_pointer);
pre_r($ar);
答案 1 :(得分:0)
//this is your file path
$files_location = "database/";
//this function will return latest file in folder
function latest_file_Name ($files_location) {
//open folder and reads whats inside
$openDir = opendir($files_location);
//look for each file in the folder.
while (false !== ($fileName = readdir($openDir))) {
//ignore the . and .. these are system folders. you can also ignore any other file if not necesery
// for Example if($fileName != "." && $fileName != ".." && $fileName != "unwanted_file_name.csv)" in condition
if($fileName != "." && $fileName != "..")
{
$list[date("YmdHis ", filemtime($files_location.$fileName))]=$fileName;
}
}
rsort($list);
$last_file =array_shift(array_values($list));
return $last_file;
}
$last_file_in_folder = latest_file_Name($files_location);
$f_pointer=fopen("database/".$last_file_in_folder,"r"); // file pointer
$ar=fgetcsv($f_pointer);
print_r($ar);
尝试一下,希望它能解决您的问题。