簡體   English   中英

使用 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.

不按修改日期排序。 我不是 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM