2012-04-10 3 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 –

ответ

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

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

+0

@ powers1 благодарит за упоминание об этом! будет редактировать –

+0

Отличный краткий ответ. Было бы лучше ответить, если бы вы реализовали его дело, но таким образом он более дидактичен, так как он должен работать с кодом. –

Смежные вопросы