Topic: Как в PHP вывести дерево папок и файлов
<?php
$path = '../';
$queue = ";
function createDir($path = '.')
{
if ($handle = opendir($path))
{
echo '<ol class="tree">';
while (false !== ($file = readdir($handle)))
{
if (is_dir($path.$file) && $file != '.' && $file !='..')
printSubDir($file, $path, $queue);
else if ($file != '.' && $file !='..')
$queue[] = $file;
}
printQueue($queue, $path);
echo '</ol>';
}
}
function printQueue($queue, $path)
{
foreach ($queue as $file)
{
printFile($file, $path);
}
}
function printFile($file, $path)
{
echo '<li class="file"><a href="' . $path.$file. ' ">' . $file . '</a></li>';
}
function printSubDir($dir, $path)
{
echo '<li class="toggle">' . $dir . '<input type="checkbox">';
createDir($path.$dir.'/');
echo '</li>';
}
createDir($path);
Описание основных функции:
$path — путь к файлам для дерева каталогов, если значение '.' выводятся файлы из текущего каталога где находится файл tree.php.
createDir($path) принимает в путь (или по умолчанию в каталоге, в котором этот файл находится). Использует как printFile($file, $path) и printSubDir($dir, $path).
printFile($file, $path) выводит ссылку в элемент HTML <li> с помощью данного файла и пути к нему.
printSubDir($dir, $path) каталоги и подкаталоги с помощью вызова createDir($path) там где рекурсия.