Как рекурсивно перебрать файлы на php?

Рекурсивный обход каталога с помошью RecursiveDirectoryIterator

Для рекурсивного обхода файловой системы можно использовать RecursiveDirectoryIterator:

$path = $_SERVER['DOCUMENT_ROOT'];
$directory = new \RecursiveDirectoryIterator($path);
$iterator = new \RecursiveIteratorIterator($directory);
$files = array();
$bad = 0;
$ok = 0;
foreach ($iterator as $info) {
    echo $info->getPathname()."
"; }

Рекурсивный вывод спомошью opendir() и readdir()

function printTree($level=1) {
    // Открываем каталог и выходим в случае ошибки.
    $d = @opendir(".");
    if (!$d) return;
    while (($e=readdir($d)) !== false) {
        // Игнорируем элементы .. и .
        if ($e=='.' || $e=='..') continue;

        // выводим файл.
        if (!@is_dir($e)) {
            echo "$e\n";
            continue;
        }

        // Печатаем пробелы, чтобы сместить вывод.
        for ($i=0; $i<$level; $i++) echo "  ";
        // Выводим текущий элемент.
        echo "$e\n";
        // Входим в текущий подкаталог и печатаем его
        if (!chdir($e)) continue;
        printTree($level+1);
        // Возвращаемся назад
        chdir("..");
        // Отправляем данные в браузер, чтобы избежать видимости зависания
        // для больших распечаток.
        flush();
    }
    closedir($d);
}

$path = $_SERVER['DOCUMENT_ROOT'];
echo "<pre>";
echo "/\n";
chdir($path);
PrintTree();
echo "</pre>";

  1. PHP
  2. Примеры