【问题标题】:Sort files with filemtime使用 filemtime 对文件进行排序
【发布时间】:2017-10-22 18:39:28
【问题描述】:

我有一个从图像目录生成图库的 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 sorting filemtime


    【解决方案1】:
    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>';
      }
    

    【讨论】:

    • 这只是一个类似的概念,只是将修改日期作为时间戳,放入数组并通过arsort()进行排序,以获得所需的结果。那家伙说他不是php开发者,他只需要一个解决方案,我希望这对他有帮助,我不认为他是从底层学习PHP的......
    【解决方案2】:

    可变范围是您的问题,$src_folder 在您的 filetime_callback 函数的上下文中未定义。

    不要在开发环境中禁用错误​​报告。


    另一个问题是您没有对正确的数组进行排序。您正在创建一个空数组 $files 然后尝试对其进行排序而不是 $src_files 数组。

    【讨论】:

    • 谢谢,我已经在 filetime_callback 的上下文中定义了 $src_folder。它不再显示警告,但仍未排序。
    • 好吧...你有多个问题。您正在对一个空数组进行排序...
    猜你喜欢
    • 2014-05-25
    • 2010-11-26
    • 2019-03-15
    • 2021-10-04
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多