代码之家  ›  专栏  ›  技术社区  ›  Roberto Aloi

用PHP按创建/修改日期排序文件[重复]

php
  •  11
  • Roberto Aloi  · 技术社区  · 16 年前


    File creation time

    在PHP中,如何检索包含在按创建日期(或任何其他排序机制)排序的文件夹中的文件?

    According to the doc 这个 功能:

    文件名在 由存储它们的顺序 文件系统。

    6 回复  |  直到 9 年前
        1
  •  8
  •   knittl    16 年前

    将它们的信息保存到数组中,对数组进行排序,然后循环数组

    if($h = opendir($dir)) {
      $files = array();
      while(($file = readdir($h) !== FALSE)
        $files[] = stat($file);
    
      // do the sort
      usort($files, 'your_sorting_function');
    
      // do something with the files
      foreach($files as $file) {
        echo htmlspecialchars($file);
      }
    }
    
        2
  •  6
  •   trante    14 年前

    这就是我的解决方案:

    $fileList = array();
    $files = glob('home/dir/*.txt');
    foreach ($files as $file) {
        $fileList[filemtime($file)] = $file;
    }
    ksort($fileList);
    $fileList = array_reverse($fileList, TRUE);
    print_r($filelist);
    

    输出如下:

    array(
        (int) 1340625301 => '/home/dir/file15462.txt',
        (int) 1340516112 => '/home/dir/file165567.txt',
        (int) 1340401114 => '/home/dir/file16767.txt'
    )
    

    然后使用“foreach”循环获取所需的文件。

        3
  •  4
  •   soulmerge    16 年前

    asort() 在那个阵列上。

    $files = array(
        'file1.txt' => 1267012304,
        'file3.txt' => 1267011892,
        'file2.txt' => 1266971321,
    );
    asort($files);
    var_dump(array_keys($files));
    # Output:
    array(3) {
      [0]=>
      string(9) "file2.txt"
      [1]=>
      string(9) "file3.txt"
      [2]=>
      string(9) "file1.txt"
    }
    
        4
  •  2
  •   Pekka    16 年前

    嘿,即使是伟大的 DirectoryIterator 我可以开箱即用。唉。

    preg_find . 我从来没用过,但它看起来不错。

    sorted in by filesize, in descending order?
    $files = preg_find('/./', $dir,
      PREG_FIND_RECURSIVE| PREG_FIND_RETURNASSOC |
      PREG_FIND_SORTFILESIZE|PREG_FIND_SORTDESC);
    
    $files=array_keys($files);
    
        5
  •  0
  •   jackbot    16 年前

    你可以用 scandir() 要将目录的内容读入数组,请使用 fileatime() 或 filectime() 分别查看每个文件的访问或创建时间。从这里排序数组应该不会太难。

        6
  •  -2
  •   futtta    16 年前

    使用 shell_exec

    $output=shell_exec('ls -t1');
    
    推荐文章