2 回答
TA贡献1783条经验 获得超4个赞
您必须使用此。
if ($handle = opendir($dir)) {
while (false !== ($file = readdir($handle))) {
$files[] = $file;
}
sort($files);
$clength = count($files);
for ($x = 0; $x < $clength; $x++) {
echo $files[$x];
echo "<br>";
}
}
更新
$files[] = strtolower($file); // for ignore first letter capital
TA贡献1829条经验 获得超6个赞
要回答您的问题,您需要首先收集所有文件,然后立即对其进行排序。因此您的代码看起来像-
<?php
while (false !== ($file = readdir($handle))) {
$files[] = $file;
}
sort($files);
但是,更好的选择是只使用scandir(),它会向您返回目录中的文件列表(包括文件夹),然后您可以对它们进行相应的排序。
我使用过usort(),以按字母顺序对文件进行排序,而忽略了大写或小写,同时保留了文件名的原始表示形式。
代码:
<?php
$files = array_diff(scandir(YOUR_DIRECTORY_PATH_HERE),array(".",".."));
usort($files,function($file1,$file2){
return strcmp(strtolower($file1),strtolower($file2));
});
print_r($files);
我已经使用array_diff()删除了.和..,并且包含在的结果中scandir().
- 2 回答
- 0 关注
- 169 浏览
添加回答
举报