首页 > 解决方案 > 带有文件时间的排序功能

问题描述

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

$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>';

  }

}

标签: php

解决方案


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

$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;
});

然后进行排序

希望这可以帮助!


推荐阅读