我有一个列出目录中所有文件的页面,如果可能的话,我希望它们按字母顺序排序。不太清楚如何做到这一点。以下是当前代码。如果有人有任何想法,那就太棒了!
<?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),". ",basename($file['name']),"</div>\n";
echo "<div class=\"menu2\">",date('r', $file['lastmod']),"</div>\n";
}
echo "<div class=\"clear\"></div>\n";
echo "</div>\n";
?>
答案 0 :(得分:1)
添加此
natsort($retval);
前
return $retval;
答案 1 :(得分:0)
在你的getFileList函数中,在返回值之前添加它:
usort($retval, function($dirA, $dirB) {
return strnatcmp($dirA['name'], $dirB['name']);
});
请注意,您需要使用php 5.3.0或更高版本才能使用匿名函数。