精確格式化位元組
在各種場景中,有必要將位元組值格式化為人類可讀的單位,例如千字節、兆位元組、和千兆位元組。例如,在網頁上顯示檔案大小需要將位元組格式化為適當的單位。
解決方案:使用格式化函數
一個有效的解決方案是使用格式化函數它將位元組作為輸入並傳回格式化的字串。以下是實現此目的的範例PHP 函數:
function formatBytes($bytes, $precision = 2) { $units = array('B', 'KB', 'MB', 'GB', 'TB'); $bytes = max($bytes, 0); $pow = floor(($bytes ? log($bytes) : 0) / log(1024)); $pow = min($pow, count($units) - 1); // Uncomment one of the following alternatives // $bytes /= pow(1024, $pow); // $bytes /= (1 << (10 * $pow)); return round($bytes, $precision) . $units[$pow]; }
說明
此函數採用兩個參數:
此函數使用陣列$units 來表示單位(位元組、千字節、兆位元組、千兆位元組和太字節)。它透過將 $bytes 的對數除以 1024 的對數來計算代表適當單位的功率 $pow。最大功率上限為數組中的最高單位。
然後函數將位元組值除以適當的功率將其轉換為所需的單位。最後,它將值舍入到指定的精度,並附加 $units 數組中的相應單位。
例如,如果 $bytes 為 5,222,937,則函數會將其格式化為「5.01 MB」。
以上是如何精確地將位元組格式化為人類可讀的單位?的詳細內容。更多資訊請關注PHP中文網其他相關文章!