2014-02-14 3 views
0

Я пытался распечатать файлы в списке, получая оба файла, папки и подпапки. Я могу получить все, но сначала хочу отобразить папки. Есть ли способ сделать это?PHP сканирует папки, тогда файлы в то время как эхо

Моего код до сих пор:

function getFiles($path) { 
    foreach (new DirectoryIterator($path) as $file) { 
      if($file->isDot()) continue; 

      if($file->isDir()) 
       echo "<li class='folder'>\n"; 
      else 
       echo "<li>\n"; 

       echo "<a href='#'>" . $file->getFilename() . "</a>\n"; 
      if ($file->isDir()) { 
       echo "<ul>\n"; 
       getFiles($file->getPathname()); 
       echo "</ul>\n"; 
      } 
      echo "</li>\n"; 

    } 
} 

Надеется, что вы можете мне помочь!

ответ

2

Вместо echo добавить их во временный массив. Я бы создал имя массива $directories и массив с именем $files, после чего вы можете выполнить цикл через эти два массива и echo.

Что-то вроде этого:

function getFiles($path) { 
    $directories = array(); 
    $files = array(); 
    foreach (new DirectoryIterator($path) as $file) { 
     if ($file->isDot()) 
      continue; 

     if ($file->isDir()) 
      $directories[] = $file; 
     else 
      $files[] = $file; 
    } 
    foreach($directories as $file) { 
     echo "<li class='folder'>\n"; 
      echo "<a href='#'>" . $file->getFilename() . "</a>\n"; 
      echo "<ul>\n"; 
      getFiles($file->getPathname()); 
      echo "</ul>\n"; 
     echo "</li>\n"; 
    } 
    foreach($files as $file) { 
     echo "<li>\n"; 
      echo "<a href='#'>" . $file->getFilename() . "</a>\n"; 
     echo "</li>\n"; 
    } 
} 
+0

Как бы я тогда быть в состоянии повторить файлы внутри папки recursivly? – Nicoeg

+0

См. Обновленный ответ. – Pitchinnate

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