使用 filemtime 对文件进行排序
Sort files with filemtime
我有 PHP 文件可以从图像目录生成画廊。
我想按修改日期对图片进行排序。
我正在尝试使用 filemtime 函数,然后使用以下代码对函数进行排序:
<?php
$src_folder = 'gallery';
$src_files = scandir($src_folder);
function filetime_callback($a, $b) {
if (filemtime($src_folder.'/'.$a) === filemtime($src_folder.'/'.$b)) return 0;
return filemtime($src_folder.'/'.$a) > filemtime($src_folder.'/'.$b) ? -1 : 1;
}
$files = array();
usort($files, "filetime_callback");
foreach($src_files as $file) {
echo $file . ' - ' . date ("F d Y H:i:s.", filemtime($src_folder.'/'.$file)) . '<br>';
}
?>
输出是这样的:
image01.jpg - October 22 2017 19:40:02.
image02.jpg - October 22 2017 19:39:19.
image03.jpg - October 22 2017 19:39:23.
image04.jpg - October 22 2017 19:39:28.
未按修改日期排序
如何让我的代码工作?
变量范围是您的问题,$src_folder
在您的 filetime_callback 函数的上下文中未定义。
不要在开发环境中禁用错误报告。
另一个问题是您没有对正确的数组进行排序。您正在创建一个空数组 $files 然后尝试对其进行排序而不是 $src_files 数组。
function scan_dir($dir) {
$ignored = array('.', '..', '.svn', '.htaccess');
$files = array();
foreach (scandir($dir) as $file) {
if (in_array($file, $ignored)) {
continue;
}
$filemtime = filemtime($dir . '/' . $file);
$files[$file] = $filemtime;
}
arsort($files);
$files = array_keys($files);
return ($files) ? $files : false;
}
$src_folder = 'gallery';
$files = scan_dir($src_folder);
foreach($files as $file) {
echo $file . ' - ' . date ("F d Y H:i:s.", filemtime($src_folder.'/'.$file)) . '<br>';
}
我有 PHP 文件可以从图像目录生成画廊。
我想按修改日期对图片进行排序。
我正在尝试使用 filemtime 函数,然后使用以下代码对函数进行排序:
<?php
$src_folder = 'gallery';
$src_files = scandir($src_folder);
function filetime_callback($a, $b) {
if (filemtime($src_folder.'/'.$a) === filemtime($src_folder.'/'.$b)) return 0;
return filemtime($src_folder.'/'.$a) > filemtime($src_folder.'/'.$b) ? -1 : 1;
}
$files = array();
usort($files, "filetime_callback");
foreach($src_files as $file) {
echo $file . ' - ' . date ("F d Y H:i:s.", filemtime($src_folder.'/'.$file)) . '<br>';
}
?>
输出是这样的:
image01.jpg - October 22 2017 19:40:02.
image02.jpg - October 22 2017 19:39:19.
image03.jpg - October 22 2017 19:39:23.
image04.jpg - October 22 2017 19:39:28.
未按修改日期排序
如何让我的代码工作?
变量范围是您的问题,$src_folder
在您的 filetime_callback 函数的上下文中未定义。
不要在开发环境中禁用错误报告。
另一个问题是您没有对正确的数组进行排序。您正在创建一个空数组 $files 然后尝试对其进行排序而不是 $src_files 数组。
function scan_dir($dir) {
$ignored = array('.', '..', '.svn', '.htaccess');
$files = array();
foreach (scandir($dir) as $file) {
if (in_array($file, $ignored)) {
continue;
}
$filemtime = filemtime($dir . '/' . $file);
$files[$file] = $filemtime;
}
arsort($files);
$files = array_keys($files);
return ($files) ? $files : false;
}
$src_folder = 'gallery';
$files = scan_dir($src_folder);
foreach($files as $file) {
echo $file . ' - ' . date ("F d Y H:i:s.", filemtime($src_folder.'/'.$file)) . '<br>';
}