我想用PHP glob函数获取一系列文件,但不超过一个月(或其他指定的日期范围)。
当前代码:
$datetime_min = new DateTime('today - 4 weeks');
$product_files = array();
foreach(glob($image_folder.$category_folder.'*'.$img_extension) as $key => $product) if (filemtime($product)>$datetime_min) { $product_files[] = $product; }
这将返回一个错误:
注意:DateTime类的对象无法转换为int
我想它仍然会给我一个结果,所有文件在该文件夹中。所以我的方法可能是完全错误的。
我如何才能使这段代码工作,所以我只有一个数组,其中的文件不超过指定的日期?
4条答案
按热度按时间zysjyyx41#
filemtime()
返回一个整数的Unix时间戳。DateTime对象是可比较的,但仅限于彼此之间。您需要将它们转换为Unix时间戳,或者将filemtime()
的结果转换为DateTime对象。选项1:
备选方案二:
xnifntxz2#
试试这个剧本
输出
您可以使用
getAllFilesInDirectoryWithDateRange
函数并获取目录中的所有文件名在这个函数中,我使用
filemtime
来获取时间,然后像这样检查阈值lb3vh1jj3#
您可以使用array_filter()解决此问题。
chhqkbe14#
不要使用glob,获取你永远不会使用的结果是低效的,特别是当目录很大的时候。
请尝试:
因为我们并不总是知道路径分隔符的数量,所以使用cut和rev,文件总是第一个条目。