php readdir()未按顺序返回文件



i具有以下代码,该代码在目录中列出文件。我想以某种方式对输出进行分类。最好是文件名或按上传日期。这甚至可能吗?

<?php
  if ($handle = opendir('./xyz')) {
    while (false !== ($file = readdir($handle))) {
        if ($file != "." && $file != "..") {
          $thelist .= '<a href="./abc/xyz/'.$file.'">'.$file.'</a><br>';
        }
    }
  closedir($handle);
  }
?>
<h1>List of files:</h1>
<ul><?php echo $thelist; ?></ul>

编辑:带有更新的新代码。

<?php
array_multisort(array_map('filectime', $files = glob('./xyz/*.*')), SORT_DEC, $files);
?>
<h1>List of files:</h1>
<ul><?php foreach($files as $file) {
    echo '<a href="./abc/'.$file.'">'.$file.'</a><br>';
}
?></ul>

您无法用readdir排序,CC_1以将它们存储在文件系统中的顺序中。您可以将它们读成一个阵列并进行排序。array_multisort运行良好,您可以用其他功能替换filectime

array_multisort(array_map('filectime', $files = glob('./xyz/*.*')),
                SORT_ASC, $files);
  • 这将所有文件都输入数组$files,映射到filectime以获取时间,对此进行分类,然后对其进行分类。

  • 对于字母顺序,只需在glob之后使用sortrsort

拥有排序的数组后,只需循环并显示或构建字符串:

foreach($files as $file) {
    echo '<a href="./abc/xyz/'.$file.'">'.basename($file).'</a><br>';
}

您是否尝试过使用数组中名称的一种变形,然后在此尝试进行排序之后?

<?php $cars = array("Volvo", "BMW", "Toyota"); sort($cars); ?>

相关内容

  • 没有找到相关文章

最新更新