1

我有一些代码可以将目录的内容打印到网页上,似乎让我无法理解的是如何让它按字母顺序打印出来。

<?php

 $dir="../zpress/pages"; // Directory where files are stored

 if ($dir_list = opendir($dir))
 {
 while(($filename = readdir($dir_list)) !== false)
 if(!is_dir($filename))
 {
  ?>
  <p><a href="../zpress/pages/<?php echo $filename; ?>"><?php echo $filename;
  ?></a></p>
  <?php
  }
  closedir($dir_list);
  }

  ?>

任何建议都将受到欢迎。

4

3 回答 3

1
$the_files = array();
while(($filename = readdir($dir_list)) !== false) {
    if(!is_dir($filename)) {
        array_push($the_files,$filename);
    }
}
sort($the_files);
foreach($the_files as $the_file) { ?>
   <p><a href="../zpress/pages/<?php echo $the_file; ?>"><?php echo $the_file;?></a></p>
<?php } ?> 
于 2012-04-10T01:48:32.927 回答
1

您可以使用scandirwhich 将返回按字母顺序排序的目录中的所有文件

$files = scandir($dir);

foreach($files as $file) {
   // your code here
}

扫描目录

于 2012-04-10T01:50:04.623 回答
0

您可以将整个目录列表 slurp 到内存中,然后应用strnatcasecmp对列表进行排序:

$dir = ".";
$files = glob("$dir/*");
usort($files, 'strnatcasecmp');
// $files is now sorted

使用strnatcasecmp将为您提供自然大小写排序的顺序,从而获得更多人类可读的输出。见这里的解释: http: //sourcefrog.n ​​et/projects/natsort/

于 2012-04-10T01:49:38.333 回答