[英]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.
不按修改日期排序。 我不是 php 程序員,所以我找不到解決方案。
我怎樣才能讓我的代碼工作? 謝謝。
這是適合您的工作解決方案嗎?
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>';
}
變量范圍是您的問題, $src_folder
在您的 filetime_callback 函數的上下文中未定義。
不要在開發環境中禁用錯誤報告。
另一個問題是您沒有對正確的數組進行排序。 您正在創建一個空數組 $files 然后嘗試對其進行排序而不是 $src_files 數組。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.