2013-05-18 41 views
0

TIA。有了我的補救PHP技能,我無法弄清楚爲什麼scandir不會自動按字母順序排序。 (將文件夾分組在一起並進行按字母順序排列和文件分組在一起並按字母順序排序也很好,但這並不重要。)我錯過了什麼?PHP Scandir不是按字母順序自動生成的嗎? TIA。

<?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>"); 
     } 
    } 
} 
?> 
+0

修訂:目錄正確地按字母順序排列時_all_文件名的第一個字母是小寫(或者,我認爲,當_all_文件名的第一個字母是大寫時)。有沒有辦法讓它們按字母順序排列,以便文件名的第一個字母可以不區分大小寫? – WGD

+0

使用natcasesort解決: <?php $ dir ='./customers/'。 $客戶。 「/」; $ exclude = array(「。」,「..」,「。htaccess」); ($ dir)){ \t if(is_dir($ dir)){ \t \t $ files = scandir($ dir); \t \t natcasesort($ files); \t的foreach($文件,$關鍵=> $ DIR){ \t如果(in_array($目錄,$排除)!){ \t回聲( 「".$dir."
」); } } } ?> 希望這有助於某人。 – WGD

+0

如果您有答案,您應該將其作爲答案(而不是評論)發佈,並將其標記爲已接受。 – Kuitsi

回答

0

正如WGD說,你必須通過以下方式使用natcasesort

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