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 » » Вопросы новичков » Изменить вывод списка файлов

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

1. TheRealKos - 14 Января, 2014 - 17:12:29 - перейти к сообщению
Доброго времени суток. В общем есть такой вот код, который выводит файлы в папке 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?

 

Powered by ExBB FM 1.0 RC1