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

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

 

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

вид форума:
Линейный форум Структурный форум

тема: Ответ 005 на задачу N 8
 
 автор: SoftTime   (21.02.2006 в 14:46)   письмо автору
 
 

Ответ 005 на задачу N 8.
С условиями задачи можно ознакомится по ссылке.

<?php
  
function getdirsize $dir1 ) { # рекурсивная функция, которая возвращает размер папки
     
$size 0;
     global 
$c;    # счетчик вложености папки
     
$c++;      # если была вызвана функция, счетчик вложености увеличивется
     
chdir $dir1 ); 
     
$dir opendir"." ) or die ("No a dir $dir1 in " getcwd());
     while ( 
$file readdir $dir ) ) {                  # читаем каталог 
         
if ( $file == "." or $file == "..") continue;     # пропускаем не нужные имена
         
         # если считываемый елемент папка - идем глубже, иначе добавляем к обьему размер файла
         
$size += ( filetype $file ) == "dir" ) ? getdirsize $file ) : filesize $file );
         
     }
     if ( 
$c == # если это подпапка заданой директории выводим имя и размер 
         
echo "<tr><td align=\"right\">$dir1</td><td>$size</td></tr>";
     
$c--; # уменьшаем уровень вложености
     
chdir "../" );
     return 
$size;
  }
  
  
$c 0;
  
$dir "/";

  echo 
"<table align=\"center\">";
            
$total getdirsize $dir );
  echo 
"<tr ><td align=\"right\"><strong>&nbsp;</strong></td>  <td><strong>total <br>$total</strong></td></tr></table>";
?>


http://www.softtime.ru/info/task.php?id_article=78

   
 
 автор: cheops   (22.02.2006 в 23:14)   письмо автору
 
   для: SoftTime   (21.02.2006 в 14:46)
 

Очень компактный скрипт, оригинально оформленный результат. При решении задачи можно было обойтись без глобальных массивах, но в данной конкретной задаче - это не смертельно, более того привело к уменьшению кода. Очень добротное решение.

   
 
 автор: Саша   (23.02.2006 в 11:23)   письмо автору
 
   для: cheops   (22.02.2006 в 23:14)
 

chdir по моему лучшее решение, это позволяет избавится от проблемы со слешами и позволяет правильно работать не зависимо от платформы

   
 
 автор: cheops   (23.02.2006 в 14:03)   письмо автору
 
   для: Саша   (23.02.2006 в 11:23)
 

Насчёт лучшего не знаю, но это действительно позволяет избавиться от целого класса ошибок связанных с удвоением слеша.

   
 
 автор: udaf   (25.02.2006 в 01:40)   письмо автору
 
   для: Саша   (23.02.2006 в 11:23)
 

>chdir по моему лучшее решение, это позволяет избавится от
>проблемы со слешами и позволяет правильно работать не
>зависимо от платформы
Это интересно как-же?
И мне очень "понравились" имена переменных типа $c

   
Rambler's Top100
вверх

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