|
|
|
| Ответ 002 на задачу N 9.
С условиями задачи можно ознакомится по ссылке.
//size_all.php from udaf
<?php
/*
//для тех у кого пхп ниже пятой версии
//просто не хотелось ничего менять в своих функциях
function scandir($dir_name)
{
$opened_dir = opendir($dir_name);
while (($file = readdir($opened_dir)) !== false)
{
$files_in_array[] = $file;
}
closedir($opened_dir);
return $files_in_array;
}
*/
//функция для подсчета размера каталога
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;
}
//функция выводящяя директорию и ее размер
function dir_names($dir_name, $begin)
{
//получаем список файлов
$files_in_dir = scandir($dir_name);
//обходим массив
foreach($files_in_dir as $file_in_dir)
{
//фильтрация от текущей директории и родительской
if(($file_in_dir == ".") || ($file_in_dir == ".."))continue;
//если директория
if(is_dir($dir_name."/".$file_in_dir))
{
//выводим ее название с ттступами и ее размер пощитанный функцией dir_size
echo("<tr><td>".$begin.$file_in_dir."</td><td>".dir_size($dir_name."/".$file_in_dir)."</td></tr>\n");
//рекурсивно вызываем функцию для подкаталогов
dir_names($dir_name."/".$file_in_dir,$begin."../");
}
}
}
echo("<table>\n<tr align=left><th>dir</th><th>size</th>\n</tr><tr><td>.</td><td>".dir_size(".")."</td></tr>\n");
dir_names(".","./");
echo("</table>");
?>
|
http://www.softtime.ru/info/task.php?id_article=79 | |
|
|
|
|
|
|
|
для: SoftTime
(25.02.2006 в 19:43)
| | Очень компактный скрипт, причём без использования глобальных переменных.
PS Так как скрипта всего два, а тонкости разбирали в предыдущей задаче, то оцеки выставляются по читабельности и оригинальности, соответственно 5 и 4. | |
|
|
|