【问题标题】:Sorting function with filemtime带有文件时间的排序功能
【发布时间】:2020-03-22 15:20:08
【问题描述】:

我在页面上显示文件及其添加日期。我想按日期添加排序,但我不知道该怎么做。下面是一段代码:

$dir_a2    = 'serv_fic2/Anglais';

$files_a2  = scandir($dir_a2, 1);

$res = '<div class="container">
          <div class="row title">
            <div class="col-md-12">
              <h1>Gestion Documents Formateurs</h1>
            </div>
          </div>
          <div class="row title">';

$res .= '<div class="col-md-6">
            <b>Anglais</b>';

foreach ($files_a as $key => $value) {
  if(!in_array($value,array(".",".."))){

      $res .=   '<br>'.$value.
                '<i> | mis le : '.date ("d.m.y",filemtime('serv_fic/Anglais/'.$value)).'</i>'.
                '<a href="download.php?path=Anglais&file='.$value.'&down=form">
                  <input type="button" value="Telecharger">
                </a>
                <a href="delete_file.php?path=Anglais&file='.$value.'&u_id=Admin&type=Admin&delete=form">
                  <input type="button" value="Supprimer">
                </a>';

  }

}

【问题讨论】:

  • 您是否需要能够对页面上显示的列表或仅在扫描目录之后进行排序?
  • Bonjour ;) 这是一个可以帮助您的示例
    stackoverflow.com/questions/6401714/php-order-array-by-date
  • 我需要使用 select 或其他方式在页面上选择一个日期范围 Bonjour Witzig Adrien :D Thx

标签: php


【解决方案1】:

可以通过以下代码对文件时间进行排序

$files = scandir($dir_a2, 1);
usort($files, function($a,$b) {
  return filemtime($b) - filemtime($a);
});

这是排序DESC,如果要ASC,改

filemtime($b) - filemtime($a)

filemtime($a) - filemtime($b)

如果你想过滤特定范围内的文件时间,试试这个

// Should from _GET or _POST
$from = strtotime('2020/02/10 00:00:01');
$to = strtotime('2021/03/30 00:00:01');

$files = array_filter($files, function($file) use ($from, $to) {
  return $from <=  filemtime($file) && filemtime($file) <= $to;
});

然后排序

希望这会有所帮助!

【讨论】:

猜你喜欢
  • 2021-04-09
  • 2012-11-06
  • 2011-11-02
  • 2013-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-30
  • 1970-01-01
相关资源
最近更新 更多