Листинг директорий : ищет файлы и папки в определенной папке. Не получается сделать, чтобы открывал найденные папки и искал в них файлы. PHP: <?php $mas_dir[0] = '/'; // папка в которой искать. $i=0; //счетчики равны нулю : кол-во найденных папок. $td=0; //временная переменная для найденных папок. $tf=0; //счетчики равны нулю : кол-во найденных файлов. while (true == isset($mas_dir) ) //пока есть папки в папках, ищем. { //в директории $mas_dir[$i] = opendir(''.$mas_dir[$i].''); // здесь указывается путь к вновь найденной папке. $td=$i; //временная переменная while (true == ($file = readdir($mas_dir[$i]))) { if ($file != "." && $file != "..") if (is_dir($file) == true ) { $td=$td+1; $mas_dir[$td]=$file; }; if (is_file($file) == true ) { $mas_file[$tf]=$file; $tf=$tf+1; }; }; closedir($mas_dir[$i]); $i=$td; //временная переменная //вывод на экран for ($is=0; $is<count($mas_dir); $is++) echo "Dir $is $mas_dir[$is] <br>"; for ($is=0; $is<count($mas_file) ; $is++) echo "File $is $mas_file[$is] <br>"; //если ещё есть папки, то if (true == isset($mas_dir[$i+1] ) ) { array_shift($mas_dir); //удаляем первый элемент массива $i=$i-1; //уменьшаем указатель на единицу } else break; если нет, то заканчиваем работу. } ?> Если в папке найдены папки, то скрипт продолжает работу, копирую названия найденных папок в массив $mas_dir[] . Как только скрипт переберет все папкипройдет по всм папкам он закончит работу. Все найденные файлы, перемещаются в массив $mas_file[]. При нахождении новых папок, нужна указывать путь к папке (в выделенной строке. Но функция getcwd определяет путь, в котором работает скрипт. Как определять путь к найденной папке, чтобы открыть её? И как прописывать постоянно меняющийся путь к вновь найденным папкам в папках (см. выделенную строку)?
PHP: <?php function ls($dir,$level=0) { if(!$level) chdir($dir); $dir=opendir('.'); while ($d = readdir($dir)) { if($d=='.' || $d=='..') continue; if(is_dir($d)) { echo str_repeat("\t",$level).$d."\n"; chdir($d); ls($d,$level+1); chdir('..'); } else if(is_file($d)) { echo str_repeat("\t",$level).$d."\n"; } } } echo '<pre>'; ls('.'); echo '</pre>'; ?>