2012-04-10 69 views
1

我有一些將目錄內容打印到網頁上的代碼,似乎在逃避的是如何使它按字母順序打印。按字母順序排列目錄

<?php 

$dir="../zpress/pages"; // Directory where files are stored 

if ($dir_list = opendir($dir)) 
{ 
while(($filename = readdir($dir_list)) !== false) 
if(!is_dir($filename)) 
{ 
    ?> 
    <p><a href="../zpress/pages/<?php echo $filename; ?>"><?php echo $filename; 
    ?></a></p> 
    <?php 
    } 
    closedir($dir_list); 
    } 

    ?> 

任何建議將是最受歡迎的。

+0

你可以看看SCANDIR – 2012-04-10 01:49:26

回答

1
$the_files = array(); 
while(($filename = readdir($dir_list)) !== false) { 
    if(!is_dir($filename)) { 
     array_push($the_files,$filename); 
    } 
} 
sort($the_files); 
foreach($the_files as $the_file) { ?> 
    <p><a href="../zpress/pages/<?php echo $the_file; ?>"><?php echo $the_file;?></a></p> 
<?php } ?> 
+0

我想這一點,但它結束了沒有網頁上顯示任何內容。 – user1309522 2012-04-10 03:00:19

0

可以發出聲音的整個目錄列表到內存中,然後應用strnatcasecmp對列表進行排序:

$dir = "."; 
$files = glob("$dir/*"); 
usort($files, 'strnatcasecmp'); 
// $files is now sorted 

使用strnatcasecmp會給你在自然情況下的排序順序,使更多的人可讀輸出。在這裏看到的解釋:http://sourcefrog.net/projects/natsort/

1

您可以使用scandir將返回目錄中的所有文件按字母順序排序

$files = scandir($dir); 

foreach($files as $file) { 
    // your code here 
} 

scandir

+0

'scandir'按字母順序升序排列)默認情況下不需要'sort':http://php.net/scandir – leepowers 2012-04-10 01:53:06

+0

@ powers1感謝您提及!將編輯 – 2012-04-10 01:57:33

+0

大概簡潔的答案。如果你實施他的案子,會更好地回答,但這樣做更符合教學法,因爲他必須處理代碼。 – 2012-04-10 02:02:02