PHP的Scandir函数是否自动按字母顺序排序?

4

TIA。我的PHP技术有限,我不知道为什么scandir不能自动按字母顺序排序。(将文件夹组合在一起并按字母顺序排序,将文件组合在一起并按字母顺序排序也很好,但这不是必要的。) 我错过了什么吗?

<?php
$dir = './customers/' . $customer . "/";
$exclude = array(".","..",".htaccess");
    if (is_dir($dir)) {
        $files = scandir($dir);
        foreach($files as $key=>$dir){
            if(!in_array($dir, $exclude)){
    echo ("<a href=\"./customers/$customer/".$dir."\">".$dir."</a><br>");
        }
    }
}
?>

修改:当所有文件名的首字母都是小写时(或者我认为,当所有文件名的首字母都是大写时),目录按字母顺序排列。有没有一种方法可以使它们按字母顺序排列,以便文件名的第一个字母不区分大小写? - WGD
通过使用natcasesort解决:<?php $dir = './customers/' . $customer . "/"; $exclude = array(".","..",".htaccess"); if (is_dir($dir)) { $files = scandir($dir); natcasesort($files); foreach($files as $key=>$dir){ if(!in_array($dir, $exclude)){ echo ("<a href=&quot;./customers/$customer/".$dir."&quot;>".$dir."</a><br>"); } } } ?> 希望这能帮助到某些人。 - WGD
如果您有答案,应该将其发布为答案(而不是评论),并将其标记为已接受。 - Kuitsi
1个回答

7

正如WGD所说,您必须按照以下方式使用natcasesort

$files = scandir($dir);
natcasesort($files);
foreach ($files as $file) {
    // your code
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接