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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Изменить вывод списка файлов

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: Есть обычный вывод файлов, сделать рекурсивным
TheRealKos
Отправлено: 14 Января, 2014 - 17:12:29
Post Id



Новичок


Покинул форум
Сообщений всего: 43
Дата рег-ции: Янв. 2014  


Помог: 0 раз(а)




Доброго времени суток. В общем есть такой вот код, который выводит файлы в папке upload/Группа/Логин. Но если в папке Логин есть еще папки, то он и их выведет (а нужно только файлы).
PHP:
скопировать код в буфер обмена
  1. $dir = "upload/".$array2["group"]."/".$array2["login"]."/";
  2.  echo $dir;
  3.  if(is_dir($dir))
  4.  {
  5.     $files = scandir($dir); //сканируем (получаем массив файлов)
  6.     array_shift($files); // удаляем из массива '.'
  7.     array_shift($files); // удаляем из массива '..'
  8.  
  9.     for($i=0; $i<sizeof($files); $i++)
  10.     {
  11.         if($array !== false)
  12.         {
  13.             $s=(array_key_exists($files[$i],$array)==true)?$array[$files[$i]]:'';
  14.         }
  15.             else
  16.             {
  17.                 $s = '';
  18.             }
  19.             echo '<a href="'.$dir.$files[$i].'" title="Скачать файл"> '.$files[$i].'<br></a> '.$s.' ';
  20.     }
  21.  }

Знаю, что можно рекурсией (но как правильно сделать так и не понял). Собственно говоря нашел вот такой код с рекурсией, но как адаптировать не знаю.
PHP:
скопировать код в буфер обмена
  1. function glob_recursive($dir, $mask){
  2.         foreach(glob($dir.'/*') as $filename){
  3.                 if(strtolower(substr($filename, strlen($filename)-strlen($mask), strlen($mask)))==strtolower($mask)) echo $filename."<br>";
  4.                 if(is_dir($filename)) glob_recursive($filename, $mask);
  5.         }
  6. }
  7. glob_recursive("upload/".$array2["group"]."/".$array2["login"]."/", ".doc");

Ругается на строчки function glob_recursive($dir, $mask){ с ошибкой Fatal error: Cannot redeclare glob_recursive() (previously declared in ). И на foreach(glob($dir.'/*') as $filename){ с ошибкой (Warning: Invalid argument supplied for foreach() in
И как изменить в маске, чтобы искал не только форматы .doc, но и .docx?
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB