如何使用php打开数组中目录的最新csv文件?

时间:2019-03-24 07:50:33

标签: php arrays database csv

因此,我有这样的设备,它可以创建一个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文件之一

csv file

我已经解决了问题,谢谢大家

2 个答案:

答案 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);

尝试一下,希望它能解决您的问题。