2012-08-24 29 views
1

我有一個網站,其中包含許多辦公室先例的手冊。當用戶使用HTML上傳腳本時,它會將先例上傳到服務器上的文件夾。我使用以下腳本列出特定文件夾中的所有文件。在PHP中按字母順序排列HTML列表

<?php //define the path as relative 
    $dir = "./OFFICE PRECEDENTS/Business & Corporate Law"; 
    $webpath =""; //using the opendir function 
    echo "<ol>";  
    // Open a known directory, and proceed to read its contents 
    if ($dh = opendir($dir)) {  
    while (($file = readdir($dh)) !== false) { 
    if (is_dir($dir.'/'.$file)){}  
    else if ($file == '.'){}  
    else if ($file == '..'){} 
    else if ($file == 'index.php'){}  
    else {  
    echo "<li><a href='https://manual.malicki-law.ca/$dir/$file'>$file</a></li>\n";  
    }  
    }  
    closedir($dh);  
    } 
    echo "</ol>";  
    ?> 

我該如何實現一個按字母順序排列列表的系統?

+2

您是否嘗試將文件詳細信息保存到數組中,對其進行排序,然後顯示它? – andrewsi

回答

2

對於您的具體情況:如果您使用scandir(),而不是readdir(),默認順序已按字母順序排列。

http://php.net/manual/en/function.scandir.php

第二個參數是:

sorting_order
默認情況下,排序順序是 升序字母。如果可選sorting_order設置爲 SCANDIR_SORT_DESCENDING,那麼排序順序按 降序排列。如果它設置爲SCANDIR_SORT_NONE,那麼結果爲 未排序。

所以不是:

if ($dh = opendir($dir)) {  
    while (($file = readdir($dh)) !== false) { 
     // your code 
    }  
    }  
    closedir($dh); 

只需使用類似:

if ($files = scandir($dir)) 
{ 
    foreach ($files as $file) { 
     // your code 
    } 
} 
+0

工作很好,謝謝你的提示! – fixnode

0

將它保存到一個數組中,但不是數字鍵,而是使用字母數字鍵。那麼你應該能夠在鍵上使用排序功能,並且你的值更改爲正確的順序。然後只需遍歷數組並將它們再次回顯出來。

欲瞭解更多信息的排序數組:http://php.net/manual/en/array.sorting.php

0
<?php 
$my_array = array("a" => "Dog", "b" => "Cat", "c" => "Horse"); 

sort($my_array); 
print_r($my_array); 
?> 

,或者您可以使用:ASORT,rsort,arsort

0

待辦事項這個方法很多,glob()也不錯,那麼你不必擔心目錄的。

<?php 

$dir = "./OFFICE PRECEDENTS/Business & Corporate Law/"; 

$files = glob($dir."*.*"); 
sort($files);//Sort the array 

echo "<ol>"; 
foreach($files as $file){ 
    if($file == $dir.'index.php'){continue;} 
    $file = basename($file); 
    echo "\t<li><a href='https://manual.malicki-law.ca/$dir/$file'>$file</a></li>\n"; 
} 
echo "</ol>"; 
?> 
+0

我認爲glob可能有一個performanec問題,當用於具有多個文件的directotries時。我不記得我在哪裏讀到這個。 – HerrSerker

+0

我使用glob與10k奇怪文件的目錄並沒有發現問題,但我也會添加一個排序緩存,所以操作只需要在目錄更改時完成。 –