PHP の関数 filesize() などで取得したファイルサイズの単位はバイトなので、容量に合わせてメガバイト、ギガバイト、テラバイトなどの単位系で表すために関数を作りました。
1KB = 1024B の計算で、桁数によって単位が切り替わります。
引数は、byte_format(容量, 小数点以下の桁数, カンマ区切り) となっています。
登録されている単位を超える場合は「1000PB」のようになります。
環境によってはあまり大きな数値を扱えない可能性があります
<?php
$size = 109951162777600;
echo byte_format($size, 2, true);
function byte_format($size, $dec=-1, $separate=false){
$units = array('B', 'KB', 'MB', 'GB', 'TB', 'PB');
$digits = ($size == 0) ? 0 : floor( log($size, 1024) );
$over = false;
$max_digit = count($units) -1 ;
if($digits == 0){
$num = $size;
} else if(!isset($units[$digits])) {
$num = $size / (pow(1024, $max_digit));
$over = true;
} else {
$num = $size / (pow(1024, $digits));
}
if($dec > -1 && $digits > 0) $num = sprintf("%.{$dec}f", $num);
if($separate && $digits > 0) $num = number_format($num, $dec);
return ($over) ? $num . $units[$max_digit] : $num . $units[$digits];
}
実行結果: 100.00TB