Основная единица измерения объема данных, которая довольно часто применяется на практике программирования это байты. Когда байты начинают превышать длину до мегабайтов, а то и до гигабайтов, то для визуализации целесообразно было бы использовать удобные для восприятия величины. К примеру, вы делаете страницу, на которой выводится список файлов, а в следующей колонке их размеры. Либо вы отображаете информацию о трафике, либо ещё что-нибудь, где указывается величина объема данных. Как правило, в программировании работа с величинами объема данных выполняется в байтах. Мы же рассмотрим пару примеров с простыми функциями, которые позволяют конвертировать величину размера данных из байтов, в удобный вид для восприятия человека.
Пример 1
1 2 3 4 5 6 | 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
01 02 03 04 05 06 07 08 09 10 11 12 | 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 мегабайта. Реализовать это не сложно, на нашем сайте есть пример, который демонстрирует склонение слова, в зависимости от числа стоящего перед ним, можно данным примером так же воспользоваться.
На этом пока всё, успехов в труде!