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

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

 

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

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

тема: Ответ 004 на задачу N 8
 
 автор: SoftTime   (20.02.2006 в 22:45)   письмо автору
 
 

Ответ 004 на задачу N 8.
С условиями задачи можно ознакомится по ссылке.
<?
  
// Функция определения размера заданной директории
  
function GetSizeDir($dirname)
  {
    
$size 0;
    
// открываем и читаем файлы из директории
    
$dir opendir($dirname);
    while(
$file readdir($dir))
    {
      if(
$file == "." || $file == "..")
        continue;
      
// если считанный файл - папка, рекусривно определяем размер этой папки
      
if(filetype("$dirname/$file") == "dir")
        
$size += GetSizeDir("$dirname/$file");
      
// иначе прибавляем к общему размеру размер файла
      
else
        
$size += filesize("$dirname/$file");
    }
    return 
$size;
  }

  function 
GetShortSize($size)
  {
    
// Массив величин
    
$metr[0] = "Bytes";
    
$metr[1] = "Kb";
    
$metr[2] = "Mb";
    
$metr[3] = "Gb";
    
$metr[4] = "Tb";

    
$i 0;
    
$newsize $size;
    
// пока значение в одной из величин (Байты, Килобайты,
    // Мегабайты, Гигабайты, Террабайты) не станет меньшим единицы ...
    
while(($newsize 1024) > 1)
    {
      
// делим разер на 2^10
      
$newsize /= 1024;
      
// меняем индекс величины
      
$i++;
    }
    
// формируем строку
    
return sprintf("%5.2f $metr[$i] ($size bytes)",$newsize);
  }

  
// читаем текущий каталог
  
$dir opendir("./");

  echo 
"<pre><table border>\n"
      
."<tr><td><b>Dir</b></td><td><b>Size</b></td></tr>\n";
  while(
$file readdir($dir))
  {
    if(
$file == "." || $file == "..")
      continue;
    
// если прочитана папка, определяем и выводим её размер
    
if(filetype($file) == "dir")
      echo 
"<tr><td>$file</td><td>".GetShortSize(GetSizeDir($file))."</td></tr>\n";
  }
  echo 
"</table></pre>\n";
?>


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

   
 
 автор: cheops   (22.02.2006 в 23:09)   письмо автору
 
   для: SoftTime   (20.02.2006 в 22:45)
 

Прекрасно структурированный код, отсутствует зависимость от функций и особенностей PHP 5, т.е. он вполне применим на практике. Отсуствуют глобальные переменные, так как возвращая результат через функцию вполне можно обойтись без них.

   
Rambler's Top100
вверх

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