Я хочу перечислить все файлы и папки в папке рекурсивно. Я написал код, чтобы получить результат, но я не могу показать его надлежащим образом.Рекурсивно распечатывать все файлы и папки в папке
<?php
class CheckFolder{
public function getSubFolders($dir)
{
$folders = array();
$ffs = scandir($dir);
foreach($ffs as $ff)
{
if($ff != '.' && $ff != '..')
{
if(is_dir($dir.'/'.$ff)) $folders[] = $ff;
}
}
return $folders;
}
public function getFiles($dir)
{
$files = array();
if(is_dir($dir))
{
$ffs = scandir($dir);
foreach($ffs as $ff)
{
if($ff != '.' && $ff != '..')
{
if(!is_dir($dir.'/'.$ff)) $files[] = '<li>'.$ff.'</li>';
}
}
}
return $files;
}
function listFolderFiles($dir)
{
$ffs = scandir($dir);
$folders = $this->getSubFolders($dir);
$files = $this->getFiles($dir);
if(strpos($dir, '/') >0)
{
$folderName = substr($dir, strrpos($dir, '/') + 1);
}
else
{
$folderName = $dir;
}
echo '<ul>';
echo '<li>'.$folderName.'</li>';
if(count($files) > 0)
{
echo '<ul>';
foreach($files as $file)
{
// /echo '<li>'.$file.'</li>';
echo $file;
}
echo '</ul>';
}
echo '</ul>';
foreach($folders as $folder)
{
// echo '<li>'.$folderName.'</li>';
$this->listFolderFiles($dir.'/'.$folder);
}
}
}
$dir = 'test';
$folder = new CheckFolder();
$folder->listFolderFiles($dir)
?>
Ожидаемое:
Вызов функции снова внутри себя, если он установлен в папку ребенка, это время, которое проходит в 'Еогеасп ($ пф в $ F)' «' $ f'»вар в качестве параметра. Не забудьте проверить внутри foreach, если папка имеет дочерние элементы, потому что если ее папка с листьями и новый массив не должны начинаться снова. [См., Если это помогает] (http://stackoverflow.com/questions/640931/recursive-counting-files-with-php). –