Я должен сделать php-скрипт, который просматривает каталог с подкаталогом. Для каждого подкаталога (и, возможно, под-подкаталога) мне нужно получить имя файла и его родительские каталоги.
У вас есть простое решение для этого? благодаря
Поскольку мне приходилось создавать те же функциональные возможности для моего сайта, я отправлю свою функцию в качестве ссылки.
function recursiveFileSearch($path, $searchmask = "*") { $path = rtrim($path, '/'); $files = array(); if(is_array($searchmask)) { for($i = 0; $i < count($searchmask); $i++) { $files = array_merge($files, glob($path.'/'.$searchmask[$i])); } sort($files); } else { $files = glob($path.'/'.$searchmask); } $dirs = glob($path.'/*', GLOB_ONLYDIR); foreach($dirs as $dir) { if(is_dir($dir)) { $files = array_merge($files, recursiveFileSearch($dir, $searchmask)); } } sort($files); return $files; }
Я не уверен на 100%, что вы просите, но если вы посмотрите на документацию scandir, первый комментарий имеет очень полезную функцию рекурсивного сканирования.
<?php function dirToArray($dir) { $result = array(); $cdir = scandir($dir); foreach ($cdir as $key => $value) { if (!in_array($value,array(".",".."))) { if (is_dir($dir . DIRECTORY_SEPARATOR . $value)) { $result[$value] = dirToArray($dir . DIRECTORY_SEPARATOR . $value); } else { $result[] = $value; } } } return $result; } ?>
Результаты будут иметь следующий формат.
Array ( [subdir1] => Array ( [0] => file1.txt [subsubdir] => Array ( [0] => file2.txt [1] => file3.txt ) ) [subdir2] => Array ( [0] => file4.txt } )