2016-04-27 1 views
0

Я взял на себя этот сайт для управления. бывший разработчик использовал opendir(), который открывает только один уровень, прежде чем получать файлы в папке. Я хотел бы создать многоуровневые папки перед окончательными файлами. Я создал подпапки на сервере, но мне нужно изменить код, чтобы динамически распознавать подпапки, поскольку папки не являются файлами.php динамически открытый многоуровневый каталог с использованием функции open_dir()

if ($handle = opendir("parentfolder/".$pageid.'/')) { 
     $list = array(); 
     while (false !== ($file = readdir($handle))) { 
      if ($file != "." && $file != "..") { 
       $list[] = "$file\n"; 
      } 
     } 
     rsort($list); 
     $clength = count($list); 
     for($x = 0; $x <$clength; $x++){ 
      $pubFolders .= "<a href='".$maindomain."/reports/".$list[$x]."' class='imagefolders'><img src='".$maindomain."/images/icons/image.png' alt=''/><br>".$list[$x]."</a>"; 
     } 
     $data = $data.$pubFolders; 
     closedir($handle); 
    } 

ответ

0

Использование glob() с GLOB_ONLYDIR; некоторые примеры функции заключаются в следующем:

function findDirectories($rootPath) { 
    $directories = array(); 
    foreach (glob($rootPath . "/*", GLOB_ONLYDIR) as $directory) { 
     $directories[] = $directory; 
    } 
    return $directories; 
} 

function findFiles($rootPath, $extension) { 
    $files = array(); 
    foreach (glob($rootPath . "/*.$extension") as $file) { 
     $files[] = $file; 
    } 
    return $files; 
} 

function findFilesRecursive($rootPath,$extension) { 
    $files = findFiles($rootPath,$extension); 
    $directories = findDirectories($rootPath); 
    if (!empty($directories)) { 
     foreach ($directories as $key=>$directory) { 
      $foundFiles = findFilesRecursive($directory,$extension); 
      foreach ($foundFiles as $foundFile) { 
       $files[] = $foundFile; 
      } 
     } 
    } 
    return $files; 
} 

Если вы не заботитесь об определении конкретных расширений, просто передать в * в качестве параметра $extension.

+0

Спасибо, Дэвид. Будет проверять и возвращать – Gyne

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