Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Не получается написать функцию с рекурсией
Форумы портала PHP.SU » PHP » Напишите за меня, пожалуйста » Не получается написать функцию с рекурсией

Страниц (1): [1]
 

1. SkaN - 18 Марта, 2011 - 10:10:20 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $usr = chdir(phpmyadmin/);
  3. if ($usr == false) {echo "Хрен"};
  4. opendir($usr);
  5. function tree(&$usr) {
  6.         if (is_file(readdir($usr))) {return --readdir($usr)};
  7.         elseif (is_dir(readdir($usr))) {return --tree(readdir($usr)};
  8.         else {break};
  9. }
  10. echo tree($usr);
  11. ?>

Код, сделанный по заданию из уроков с этого же сайта. Должен выводит дерево файлов, однако он не выводит ничего... и судя по всему он мне даже папку нужную не открывает (должен, если не получается открыть, писать "Хрен", но не пишет). Может кто-нибудь подскажет, где я ошибся...
2. OrmaJever - 18 Марта, 2011 - 12:57:13 - перейти к сообщению
а так?
3. SkaN - 18 Марта, 2011 - 13:19:56 - перейти к сообщению
все равно не работает...
4. Мелкий - 18 Марта, 2011 - 13:20:26 - перейти к сообщению
Я, если честно, вообще не понимаю, как этот код может выводить что-то внятное.
Вы явно не поняли назначения используемых функций.

рекурсивное дерево файлов строится как-то так:
PHP:
скопировать код в буфер обмена
  1. function fstree($dir=".") {
  2.         echo "run: ",$dir,'<br>';
  3. if (is_dir($dir)) {
  4.     //немного разметки
  5.     echo $dir,":<br><ul>";
  6.     if ($dh = opendir($dir)) {
  7.         while (($file = readdir($dh)) !== false) {
  8.             if ($file=='..' || $file=='.') continue;
  9.             echo "<li>";
  10.             echo is_dir($dir.'/'.$file)?'true':'false';
  11.             if (is_dir($dir.'/'.$file)) fstree($dir."/".$file); //уходим в рекурсию; честно, не помню, надо ли / вставлять, вроде надо
  12.             //а здесь выводим файлы директории
  13.             else echo $file,PHP_EOL;
  14.             echo "</li>";
  15.         }
  16.         closedir($dh);
  17.     }
  18.     echo "</ul>";
  19. }
  20. }
  21. fstree("web");
5. SkaN - 18 Марта, 2011 - 13:33:21 - перейти к сообщению
мда,я много еще не понимаю_) спасибо,буду сейчас разбирать ваш код Закатив глазки

 

Powered by ExBB FM 1.0 RC1