Размер файлов в PHP измеряется в байтах, но числа из большого количества цифр для восприятия очень неудобны. На мой взгляд гораздо нагляднее, если размер больших файлов будет отображаться в килобайтах, мегабайтах и так далее. Для этого я нарисовал вот такую вспомогательную функцию:
function bytes2words($size) {
for($i=0; $i<count($st=array('Кб','Мб','Гб')); $i++) {
if (($size/=1024)<1024) { $i++; break; }
}
return round($size,2).' '.$st[($i-1)];
}
Результаты работы функции:
echo bytes2words(1000).'<br>'; // 0.98 Кб
echo bytes2words(10000).'<br>'; // 9.77 Кб
echo bytes2words(100000).'<br>'; // 97.66 Кб
echo bytes2words(1000000).'<br>'; // 976.56 Кб
echo bytes2words(10000000).'<br>'; // 9.54 Мб
echo bytes2words(100000000).'<br>'; // 95.37 Мб
echo bytes2words(1000000000).'<br>'; // 953.67 Мб
echo bytes2words(10000000000).'<br>'; // 9.31 Гб
echo bytes2words(100000000000).'<br>'; // 93.13 Гб
echo bytes2words(1000000000000).'<br>'; // 931.32 Гб
echo bytes2words(10000000000000).'<br>'; // 9313.23 Гб
echo bytes2words(100000000000000).'<br>'; // 93132.26 Гб
На перспективу можно учесть и терабайты (например, если надо считать не размер файлов, а магистральный трафик в датацентре), для этого в массив наименований надо просто добавить элемент 'Тб'. Тестовый вывод, соответственно, изменится следующим образом:
echo bytes2words(100000000000).'<br>'; // 93.13 Гб
echo bytes2words(1000000000000).'<br>'; // 931.32 Гб
echo bytes2words(10000000000000).'<br>'; // 9.09 Тб
echo bytes2words(100000000000000).'<br>'; // 90.95 Тб
Вспоминается шутка 90-х годов: "Сколько будет дважды два? - А мы покупаем или продаем?". Размер килобайта в функции указан как положено - 1024 байта, все результаты, соответственно, получаются из этого расчета. Если надо считать так, как это делают некоторые особо умные провайдеры, то замените в функции все значения 1024 на 1000.