Основная единица измерения объема данных, которая довольно часто применяется на практике программирования это байты. Когда байты начинают превышать длину до мегабайтов, а то и до гигабайтов, то для визуализации целесообразно было бы использовать удобные для восприятия величины. К примеру, вы делаете страницу, на которой выводится список файлов, а в следующей колонке их размеры. Либо вы отображаете информацию о трафике, либо ещё что-нибудь, где указывается величина объема данных. Как правило, в программировании работа с величинами объема данных выполняется в байтах. Мы же рассмотрим пару примеров с простыми функциями, которые позволяют конвертировать величину размера данных из байтов, в удобный вид для восприятия человека.
Пример 1
function formatDataSize($size) { $arSizeName = array(" Bytes", " KB", " MB", " GB", " TB", " PB", " EB", " ZB", " YB"); return $size ? round($size/pow(1024, ($i = floor(log($size, 1024)))), 2) . $arSizeName[$i] : '0 Bytes'; } echo formatDataSize(1024); // вывод: 1 KB
Данная функция проверена и используется на нескольких мною уже длительное время, работает точно и без сбоев, поэтому её можно брать и использовать. Однако если она вам кажется нечитабельной, то для вас есть другой аналогичный пример, но более наглядный.
Пример 2
function formatDataSize($bytes = 0){ $type = array("", "Kilo", "Mega", "Giga", "Tera", "Peta", "Exa", "Zetta", "Yotta"); $i=0; while($bytes >= 1024){ $bytes/= 1024; $i++; } $bytes = round($bytes, 2); return($bytes." ".$type[$i]."Bytes"); } echo formatDataSize(1024); // вывод: 1 KiloBytes
Принципиально данная функция не сильно отличается от предыдущей, вы можете использовать любую из них, которая вам больше подходит. Глобально что-то в ней менять, наверное, вам не понадобится, за исключением возможно написания величин на русском языке. При написании величин на русском языке, скорее всего вам понадобится склонять слово, в зависимости от числа, к примеру: 1 мегабайт, 2 мегабайта. Реализовать это не сложно, на нашем сайте есть пример, который демонстрирует склонение слова, в зависимости от числа стоящего перед ним, можно данным примером так же воспользоваться.
На этом пока всё, успехов в труде!