Ответов: 3 Просмотров: 1261
|
Задача следующая:
Есть директория (локальная) с большим количеством вложенных папок и фалов. Нужно сделать аналогичную структуру папок/файлов в Ecxel(для их последующей группировки) по средствам PHP (только PHP, VBA - хоть и легче но не подходит увы), т.е имеем как пример структуру на рис.1
результат как на рис.2
Решение было выбрано следующее:
1.
PHP:
скопировать код в буфер обмена
<?PHP function showTree($folder, $space) { /* Получаем полный список файлов и каталогов внутри $folder */ foreach($files as $file) { /* Отбрасываем текущий и родительский каталог */ if (($file == '.') || ($file == '..')) continue; $f0 = $folder.'/'.$file; //Получаем полный путь к файлу /* Если это директория */ /* Выводим, делая заданный отступ, название директории */ echo $space.$file."<br />"; /* С помощью рекурсии выводим содержимое полученной директории */ showTree($f0, $space.'  '); } /* Если это файл, то просто выводим название файла */ else echo $space.$file."<br />"; } } /* Запускаем функцию для текущего каталога */ showTree("./", "");
2. Полученный асоц.массив с помощью библ. PHPEcxel привести в нужный вид на Листе.
Подскажите: Есть ли альтернативное решение обхода структуры файлов и запихнуть их имена в ac.массив так чтобы получилось следующее (может библиотеки какие - то):
[каталог1 => [папка, файл, [папка,файл,файл]], file1 => файл, и т.п]
3. Или более подходящий метод выполнения задачи в целом.
Спасибо. |