|
|
|
| Ответ 001 на задачу N 8.
С условиями задачи можно ознакомится по ссылке.
//size.php from udaf
<?php
//функция для подсчета размера каталога
function dir_size($dir_name)
{
//получаем список файлов
$files_in_dir = scandir($dir_name);
//обходим массив и для директорий запускаем рекурсивно свою функцию
foreach($files_in_dir as $file_in_dir)
{
//фильтрация от текущей директории и родительской
if(($file_in_dir == ".") || ($file_in_dir == ".."))continue;
//если файл
if(is_file($dir_name."/".$file_in_dir)) $cur_dir_size += filesize($dir_name."/".$file_in_dir);
//если директория то запускаем свою функцию
if(is_dir($dir_name."/".$file_in_dir)) $cur_dir_size += dir_size($dir_name."/".$file_in_dir);
}
//возвращаем значение
return $cur_dir_size;
}
//текущая директория
$dir = ".";
//список файлов текущей директории в массиве
$files = scandir($dir);
//цикл для обхода массива
//таблица с заголовком
echo("<table>\n<tr><th>DIR</th><th>SIZE(byte)</th></tr>\n");
foreach($files as $file)
{
//так как требуется печатать размеры только подкаталогов текущего каталога
//то родительский каталог
if($file == "..")continue;
//если директория то выводим ее размер
if(is_dir($file)) echo("<tr><td>".$file."</td><td>".dir_size($file)."</td></tr>\n");
//echo($file);
}
echo("</table>");
?>
|
http://www.softtime.ru/info/task.php?id_article=78 | |
|
|
|
|
|
|
|
для: SoftTime
(20.02.2006 в 17:36)
| | Очень хорошо, неповерив, что работает - сравнил с Far - всё один в один. Прозрачный рекурсивный спуск и вообще очень хорошее решение. Однако имеется недостаток в виде функции scandir(), она доступна только начиная с PHP 5, а это значит пока не поддерживается всеми хостерами. | |
|
|
|
|
|
|
|
для: cheops
(22.02.2006 в 22:47)
| | никто не предявлял требований насчет версии пхп и совместимости с его разными версиями
но скрипт легко исправить | |
|
|
|