PHP发现最新文件正常,但新月份导致找不到文件

PHP发现最新文件正常,但新月份导致找不到文件,php,Php,我创建了一个PHP脚本来查找目录中最新的XML文件,效果很好,但今天是5月1日,我的最新文件是4月30日。今天的结果显示找不到文件,但它在那里。我查找最后一个文件的方法有问题,它的日期戳不是当前月份 这是我的密码: // Initialize list arrays, files and array counters for them $t = 0; $f = 0; $files_arr['name'] = array(); $files_arr['time'] = array(); if

我创建了一个PHP脚本来查找目录中最新的XML文件,效果很好,但今天是5月1日,我的最新文件是4月30日。今天的结果显示找不到文件,但它在那里。我查找最后一个文件的方法有问题,它的日期戳不是当前月份

这是我的密码:

//  Initialize list arrays, files and array counters for them
$t = 0;
$f = 0;
$files_arr['name'] = array();
$files_arr['time'] = array();

if (@$handle = opendir($path)) {
    while (false !== ($file = readdir($handle))) {
        if ($file != "." && $file != "..") {
            $fName = $file;
            $file = $path . '/' . $file;
            if (is_file($file)) {

                /* here is the sorting by date, just a seperate key 
                 in the array to store filetimes */

                $files_arr['time'][$t++] = filemtime($file);
                $files_arr['name'][$f++] = $file;
            }
            ;
        }
        ;
    }
    ;
    closedir($handle);
    asort($files_arr['time']);
    asort($files_arr['name']);
}

//test
foreach ($files_arr['time'] as $key => $ftime) {
    $fname = $files_arr['name'][$key];
}

// End Finding Latest File in Dir
// $source = file_get_contents('data/201404.xml');
// echo $fname;exit;

$fname = $path . "/" . date('Y') . date('m') . ".xml";

有谁能帮我获取最新的文件,而不依赖于当前日期吗?

我假设文件名的格式是201404.xml,其中文件名是年+月?
如果是这样,您不能将文件读入数组并对其进行排序,或者如果您只需要最新的文件,就可以更好地读取所有文件并将当前名称与最高名称进行比较,如果最大,则将最高名称设置为当前名称并获取下一个文件,循环直到列表末尾。在开始之前,您需要将最高值设置为空白或null。

我能够在程序员的帮助下添加一个变量:

if(date('m')-1>9)
$ss=date('m')-1;
else
$ss="0".(date('m')-1);

$filee=$path."/".date('Y').date('m').".xml";
if(file_exists($filee))
$fname=$path."/".date('Y').date('m').".xml";
else
$fname=$path."/".date('Y').($ss).".xml";

现在好像工作了

底部的$fname字符串现在只返回5月份,因为date'm'将打印当前月份。我们需要决定一种更好的方式以XML列出文件,或者如何确定要查找哪个月的文件。或者检查201405.XML是否为空,而不是查找date'm'-1。如果必须读取文件夹中的所有文件,我通常会列出文件夹的目录列表,然后将其导入数据库表。然后可以使用SQL选择具有最高值名称的文件。在这种情况下可能有些过分,但在我们的情况下,我们需要将所有图像名称存储在一个文件夹中,这样做比读取12000多个文件更快。