Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Листинг каталога

Сообщения:  [1-10]    [11-20]  [21-22] 

 
 автор: denvor   (14.02.2005 в 18:31)   письмо автору
 
   для: denvor   (11.02.2005 в 17:07)
 

Отвечаю сам себе :):
Явно определяя переменную $arr как массив, мы обнуляем ее каждый раз при рекурсивном обращении. Убираем строчку $arr = array (); - все работает.
Всем большое спасибо!

   
 
 автор: denvor   (11.02.2005 в 17:07)   письмо автору
 
   для: cheops   (10.02.2005 в 22:46)
 

я так и подумал :)
Теперь ошибки нет, но по -прежнему выводит только файлы текущей директории.
Причем, для проверки я оставил вывод на экран - все нормально работает. Проблема , похоже, в рекурсии - там то ли не идет запись в массив, то ли он затирается внешним циклом, когда регистрируются файлы текущей директории. Что тут можно придумать?

   
 
 автор: cheops   (10.02.2005 в 22:46)   письмо автору
 
   для: denvor   (10.02.2005 в 14:19)
 

Хм... дело в том, что здесь происходит рекурсивный вызов и если изменяется число параметров в исходной функции - нужно изменить число и в вызове (я гляжу это забы сделать :), поэтому исправьте пожалуйста строку
<?php
scan_dir
($dirname."/".$file,$fd,$fb);
?>

на
<?php
scan_dir
($dirname."/".$file);
?>

   
 
 автор: denvor   (10.02.2005 в 14:19)   письмо автору
 
   для: cheops   (10.02.2005 в 09:49)
 

Да, действительно работает. Теперь я после последней фигурной скобки вставляю

foreach($arr as $val)
   {
      echo("$val");
   }

Выводит только файлы (без директорий) в текущей директории и ошибку:
Undefined variable: fb in w:\home\127.0.0.1\www\list2.php on line 27
Вот.

   
 
 автор: cheops   (10.02.2005 в 09:49)   письмо автору
 
   для: denvor   (10.02.2005 в 00:44)
 

Хм... а уменя такой вариант всё выводит... какая версия PHP?

   
 
 автор: denvor   (10.02.2005 в 00:44)   письмо автору
 
   для: cheops   (08.02.2005 в 22:56)
 

Доброго времени суток, cheops и All!
Вот код:
как сделать правильно и в чем проблема -не знаю. Если ставлю echo $arr[2]; перед последней фигурной скобкой - выводит значение, а после функции - нет :(

<?php 
  
  scan_dir
("."); 
   function 
scan_dir($dirname
   { 
   GLOBAL 
$arr
   
$arr = array();
            
// Открываем текущую директорию  
            
$dir opendir($dirname);
    
// Читаем в цикле директорию 
    
while (($file readdir($dir)) !== false
    { 
      
// Если файл обрабатываем его содержимое 
      
if($file != "." && $file != ".."
      { 
        
// Если имеем дело с файлом - регистрируем его 
        
if(is_file($dirname."/".$file)) 
        { 
          
$arr[] = $dirname."/".$file." - ".date("m.d.y",filemtime($dirname."/".$file))." - ".filesize($dirname."/".$file)."<br>"
         
         } 
        
// Если перед нами директория, вызываем рекурсивно 
        // функцию scan_dir 
        
if(is_dir($dirname."/".$file)) 
        { 
          
$arr[] = $dirname."/".$file."<br>"
          
scan_dir($dirname."/".$file,$fd,$fb); 
        } 
      } 
    } 
    
// Закрываем директорию 
    
closedir($dir); 

  } 
// посмотрим третий элемент массива, к примеру...
echo ($arr[2]);

?> 

   
 
 автор: cheops   (08.02.2005 в 22:56)   письмо автору
 
   для: denvor   (08.02.2005 в 21:10)
 

Хм... не должно бы быть так, приведите пожалуйста конечный код... может я чего свежим взглядом замечу...

   
 
 автор: denvor   (08.02.2005 в 21:10)   письмо автору
 
   для: cheops   (08.02.2005 в 00:31)
 

2 cheops: с кодом isset все получилось - прогнал массив, прикручивая к файлам время и дату и запихивая обратно в массив. Но! Все равно нужно делать рекурсивный обход дерева - так что ваш код для моих целей больше подходит. Я попробовал в ваш код вставить вместо вывода листинга на экран вывод его в массив, с тем, чтобы за пределами функции дальше работать с эти массивом, но ниего не вышло - за пределы функции массив не передается даже при объявлении GLOBAL (global ... я вставил сразу после первой фигурной скобки).

   
 
 автор: cheops   (08.02.2005 в 00:31)   письмо автору
 
   для: denvor   (08.02.2005 в 00:24)
 

Для определения размера файла предназначена функция filesize(), принимающая в качестве единственного параметра путь к файлу и возвращает размер файла в байтах. http://www.softtime.ru/dic/id_dic=184&id_group=6
Для определения даты последнего изменения файла, предназначена функция filectime() http://www.softtime.ru/dic/id_dic=178&id_group=6

   
 
 автор: denvor   (08.02.2005 в 00:24)   письмо автору
 
   для: isset   (07.02.2005 в 23:26)
 

Здорово!
А как прикрутить туда вывод размера и даты изменения файла? В справочнике на сайте я не нашел эту функцию :(

   

Сообщения:  [1-10]    [11-20]  [21-22] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования