Format bytes as a human readable size in PHP

function human_bytes(int $bytes, int $precision = 1): string
{
    $units = ['B', 'KB', 'MB', 'GB', 'TB'];
    $i     = $bytes > 0 ? (int) floor(log($bytes, 1024)) : 0;
    $i     = min($i, count($units) - 1);

    return round($bytes / (1024 ** $i), $precision) . ' ' . $units[$i];
}