2014-12-04 4 views
0

как отсортировать каталог папок по алфавиту с помощью php , пожалуйста, помогите мне решить эту проблему, и это не [дублировать] сообщение спасибо.как отсортировать каталог папки по алфавиту с помощью php

этот код показывает, как этот (сортировка по времени)

  • Собака
  • Cat
  • Оранжевый
  • Яблоко
  • Doll
  • Рыба
  • Самолет
  • Banana
  • Слон

И я хочу, как этот

ABC

  • Самолет
  • компании Apple
  • компании Apple
  • Banana
  • Cat

DEF

  • Собака
  • Кукла
  • Слон
  • Рыба

PHP код

<?php 
    function folderlist(){ 
     $startdir = './'; 
     $ignoredDirectory[] = '.'; 
     $ignoredDirectory[] = '..'; 
     if (is_dir($startdir)){ 
      if ($dh = opendir($startdir)){ 
       while (($folder = readdir($dh)) !== false){ 
        if (!(array_search($folder,$ignoredDirectory) > -1)){ 
        if (filetype($startdir . $folder) == "dir"){ 
          $directorylist[$startdir . $folder]['name'] = $folder; 
          $directorylist[$startdir . $folder]['path'] = $startdir; 
         } 
        } 
       } 
       closedir($dh); 
      } 
     } 
    return($directorylist); 
    } 


    $folders = folderlist(); 
    sort($folders); 
     foreach ($folders as $folder){ 
     $path = $folder['path']; 
     $name = $folder['name']; 




    echo '<div class="menu"> 
    <h3 class="headerbar"><a href="' .$path .'index2.php?folder=' .$name . '" class="style1"><span class="headertit">' .$name . '</span></a></div>'; 
     } 
    ?> 
+1

Это немного дублируется http://stackoverflow.com/questions/884974/sort-and-display-directory-list- alphabetically-using-opendir-in-php;) –

ответ

0

Замените вызов sort что-то вроде этого:

usort($folders, function ($a, $b) { 
    return strnatcmp($a['name'], $b['name']); 
}); 

Кроме того, вы можете уменьшить сложность кода с помощью DirectoryIterator или scandir

+0

Я заменяю ваш код, но он показывает ошибку – user1796164

+0

Без знания вашего сообщения об ошибке никто вам не поможет. Выведенный код должен работать. Пример: http://3v4l.org/gc2qg – Rangad

+0

см. Ошибку http://3v4l.org/nc4aK – user1796164