我正在尝试遍历pdf文件名的反向glob,并找到在输入日期之前创建的pdf。 (我已经成功检查了文件名的blob,其中一个等于输入的日期。)
我有以下代码,我认为应该可以使用,但不是。
我假设日期/字符串转换是问题,但我在Windows上运行php并且我的调试工具是有限的。
以下代码中有人能看到我做错了吗?
$d = "2007-07-11"
$firstdate = substr(array_slice(glob('*.pdf'), 0, 1), 0, 10);
echo "<br />" . $firstdate[0];
$counter = 0;
$date_to_check = strtotime(substr($d, 0, 10));
while ($counter < 1){
foreach(array_reverse(glob("*.pdf")) as $filename) {
if ((strtotime(substr($filename, 0, 10)) < $date_to_check) || ((substr($filename, 0 ,10) == $firstdate[0]))) {
$file_to_get = $filename;
$file_found = 1;
$counter = $counter + 1;
} else {
$date_to_check->modify('-1 day');
}
}
}
文件名类似于2007-07-11-wnr.pdf,2009-12-23-wnr.pdf和2013-04-02-wnr.pdf。
答案 0 :(得分:1)
正如约翰康德指出我的日期修改是错误的。
这是有效的代码。
$counter = 0;
$date_to_check = strtotime(substr($d, 0, 10));
while ($counter < 1){
foreach(array_reverse(glob("*.pdf")) as $filename) {
if ((strtotime(substr($filename, 0, 10)) < $date_to_check) || ((substr($filename, 0 ,10) == $firstdate[0]))) {
$file_to_get = $filename;
$file_found = 1;
$counter = $counter + 1;
} else {
$date_to_check = strtotime ( '+2 days' , strtotime ( $date_to_check ) ) ;
}
}
}
谢谢约翰!