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

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

 

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

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

тема: Ответ 007 на задачу N 8
 
 автор: SoftTime   (22.02.2006 в 13:59)   письмо автору
 
 

Ответ 007 на задачу N 8.
С условиями задачи можно ознакомится по ссылке.
<?php
//Функция получения размера подкаталога
function get_size($dir) {
// В переменной $sum будет накапливаться размер рассматриваемого подкаталога. Поэтому глобализуем ее //
  
global $sum;
//Читаем папку
  
$open opendir($dir);
  while ((
$f readdir($open)) !== false) {
    
//Избегаем бесконечного цикла
    
if($f == '.' || $f == '..') { continue; }
    
//Формируем путь к рассматриваемому объекту
    
$f $dir."/".$f;
    
//Если это папка - вызываему рекурсию
    
if(is_dir($f)) { get_size($f); }
    
//Если файл - прибавляем его размер в переменную $sum
    
else { $sum += filesize($f); }
  }
}
//Выводим заголовок таблицы
echo "<center>\n<table width = '30%' cellpadding = '0' cellspacing = '0' border = '1'>\n";
//Читаем текущую папку
$o opendir('.');
while ((
$d readdir($o)) !== false) {
  
//Избегаем бесконечного цикла и пропускаем файлы
  
if($d == "." || $d == ".." || !is_dir($d)) { continue; }
  
//Обнуляем переменную $sum
  
$sum 0;
  
//Получаем в эту переменную размер рассматриваемой папки
  
get_size($d);
  
//Выводим строку таблицы
  
echo "<tr>\n<td width = '50%' align = 'center' valign = 'center'><b>$d</b></td>\n<td width = '50%' align = 'center' valign = 'center'>$sum</td>\n</tr>\n\n";
}
//Закрываем таблицу
echo "</table>\n";
?>


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

   
 
 автор: cheops   (22.02.2006 в 23:28)   письмо автору
 
   для: SoftTime   (22.02.2006 в 13:59)
 

Очень компактное решение, прекрасно справляющееся со своей задачей. Прозрачная рекурсия, использование связки opendir()+readdir() делают код читабельным и понятным любому.

   
Rambler's Top100
вверх

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