PHPでファイルサイズを表示するときの条件分岐

NO IMAGE

したいこと

KB/MB/GBで表示分ける

ソースコード

$filesize = filesize("/hogehoge.txt");

if ($filesize <= (1024**2)){// KB
  $filesize = $filesize/1024;
  $filesize = number_format($filesize,2);
  $filesize .= 'KB';
}elseif($filesize <= (1024**3)){ // MB
  $filesize = $filesize/(1024**2);
  $filesize = number_format($filesize,2);
  $filesize .= 'MB';
}elseif($filesize <= (1024**4)){ //GB
  $filesize = $filesize/(1024**3);
  $filesize = number_format($filesize,2);
  $filesize .= 'GB';
}else{ //Others
  $filesize = $filesize/(1024**4);
  $filesize = number_format($filesize,2);
  $filesize .= 'TB';
}

やってること

  1. filesizeでファイルサイズを取得し、$filesizeに格納(このときはByteで取得される)
  2. $filesizeを1024のn乗(n>=2)と比較していく
  3. n乗より小さければn-1乗の単位を与えるような条件分岐(このときに小数点以下2桁で丸める)

感想

PHPで累乗を**で書けることを知ったが、これがめっちゃ楽。

//今まで
$a * $a

//これから
$a ** 2

 

累乗が5乗とか10乗になった時に間違える心配が減る。

また、この条件分岐はファイル一覧に組み合わせているが、ほかにも使う機会も多そうなので楽に書けて良かった。