【问题标题】:PHP - List directory files in alphabetical orderPHP - 按字母顺序列出目录文件
【发布时间】:2015-09-12 10:49:15
【问题描述】:

我有一个列出目录中所有文件的页面,如果可能的话,我希望它们按字母顺序排序。不太确定如何做到这一点。以下是当前代码。如果有人有任何很棒的想法!

<?php
  function getFileList($dir)
  {
    // array to hold return value
    $retval = array();

    // add trailing slash if missing
    if(substr($dir, -1) != "/") $dir .= "/";

    // open pointer to directory and read list of files
    $d = @dir($dir) or die("getFileList: Failed opening directory $dir for reading");
    while(false !== ($entry = $d->read())) {
      // skip hidden files
      if($entry[0] == ".") continue;
      if(is_dir("$dir$entry")) {
        $retval[] = array(
          "name" => "$dir$entry/",
          "type" => filetype("$dir$entry"),
          "size" => 0,
          "lastmod" => filemtime("$dir$entry")
        );
      } elseif(is_readable("$dir$entry")) {
        $retval[] = array(
          "name" => "$dir$entry",
          "type" => mime_content_type("$dir$entry"),
          "size" => filesize("$dir$entry"),
          "lastmod" => filemtime("$dir$entry")
        );
      }
    }
    $d->close();

    return $retval;
  }
?>

<?php
  // list files in the current directory
  $dirlist = getFileList(".");
  $dirlist = getFileList("./");
?>


<?php
  echo "<div id=\"menu\">";
  echo "<div class=\"menu1 title\">Name</div><div class=\"menu2 title\">Last Modified</div>\n";
  foreach($dirlist as $file) {
    echo "<div class=\"menu1\"><a href=\"{$file['name']}\" target=\"_blank\">",number_format(++$counter),".&nbsp;",basename($file['name']),"</div>\n";
    echo "<div class=\"menu2\">",date('r', $file['lastmod']),"</div>\n";
  }
  echo "<div class=\"clear\"></div>\n";
  echo "</div>\n";
?>

【问题讨论】:

    标签: php sorting foreach directory


    【解决方案1】:

    添加这个

    natsort($retval);
    

    之前

    return $retval;
    

    【讨论】:

    • 这让我朝着正确的方向前进。 “natsort”并没有完全做到这一点,但“sort”做到了。谢谢!
    【解决方案2】:

    在您的 getFileList 函数中,在返回值之前添加:

    usort($retval, function($dirA, $dirB) {
        return strnatcmp($dirA['name'], $dirB['name']);
    });
    

    请注意,您需要 php 5.3.0 或更高版本才能使用匿名函数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-25
      • 2011-04-28
      • 2015-02-02
      • 1970-01-01
      • 2010-11-08
      • 2013-06-03
      相关资源
      最近更新 更多