<?php
function showTree($dir) {
//Стек
$list = new SplDoublyLinkedList();
$arr = scandir($dir);
$arr = array_diff($arr, array('.', '..'));
//Инициализация первого файлами и папками первого уровня вложенности
foreach($arr as $v)
$list->push($dir . DIRECTORY_SEPARATOR . $v);
//Покуда есть данные в стеке
while(!$list->isEmpty()) {
$curr = $list->shift();
echo "$curr<br>";
//Если папка
if(is_dir($curr)) {
$arr = scandir($curr);
$arr = array_diff($arr, array('.', '..'));
//Получаем список папок и файлов
$i=0;
foreach($arr as $v){
$path = $curr . DIRECTORY_SEPARATOR . $v;
$list->add($i, $path);
$i++;
}
}
}
}
//Вызываем функцию
showTree(dirname(__FILE__));
?>