2015-06-25 2 views
0

У меня есть страница, в которой перечислены все файлы внутри каталога, и по возможности я хотел бы, чтобы они сортировались по алфавиту. Не совсем уверен, как это сделать. Ниже приведен текущий код. Если у кого-то есть идеи, это будет потрясающе!PHP - Список файлов каталога в алфавитном порядке

<?php 
    function getFileList($dir) 
    { 
    // array to hold return value 
    $retval = array(); 

    // add trailing slash if missing 
    if(substr($dir, -1) != "/") $dir .= "/"; 

    // open pointer to directory and read list of files 
    $d = @dir($dir) or die("getFileList: Failed opening directory $dir for reading"); 
    while(false !== ($entry = $d->read())) { 
     // skip hidden files 
     if($entry[0] == ".") continue; 
     if(is_dir("$dir$entry")) { 
     $retval[] = array(
      "name" => "$dir$entry/", 
      "type" => filetype("$dir$entry"), 
      "size" => 0, 
      "lastmod" => filemtime("$dir$entry") 
     ); 
     } elseif(is_readable("$dir$entry")) { 
     $retval[] = array(
      "name" => "$dir$entry", 
      "type" => mime_content_type("$dir$entry"), 
      "size" => filesize("$dir$entry"), 
      "lastmod" => filemtime("$dir$entry") 
     ); 
     } 
    } 
    $d->close(); 

    return $retval; 
    } 
?> 

<?php 
    // list files in the current directory 
    $dirlist = getFileList("."); 
    $dirlist = getFileList("./"); 
?> 


<?php 
    echo "<div id=\"menu\">"; 
    echo "<div class=\"menu1 title\">Name</div><div class=\"menu2 title\">Last Modified</div>\n"; 
    foreach($dirlist as $file) { 
    echo "<div class=\"menu1\"><a href=\"{$file['name']}\" target=\"_blank\">",number_format(++$counter),".&nbsp;",basename($file['name']),"</div>\n"; 
    echo "<div class=\"menu2\">",date('r', $file['lastmod']),"</div>\n"; 
    } 
    echo "<div class=\"clear\"></div>\n"; 
    echo "</div>\n"; 
?> 

ответ

1

добавить этот

natsort($retval); 

перед тем

return $retval; 
+0

Это привело меня в правильном направлении. «natsort» не совсем это делал, а «сортировал». Благодаря! – user1610904

0

В функции GetFileList добавить это прежде returing значение:

usort($retval, function($dirA, $dirB) { 
    return strnatcmp($dirA['name'], $dirB['name']); 
}); 

Обратите внимание, что вы должны иметь PHP 5.3 .0 или выше для использования анонимной функции нс.

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