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