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

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

 

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

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

тема: Ответ 004 на задачу N 8

Сообщения:  [1-2] 

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

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

   
 
 автор: 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

   

Сообщения:  [1-2] 

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

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