money_format是PHP內置的一個格式化函數,用於根據區域設置(locale)格式化貨幣字符串。它的語法如下:
<code> string money_format ( string $format , float $number ) </code>$format是格式字符串,定義輸出格式。
$number是需要格式化的數字。
需要注意的是, money_format函數依賴於系統的區域設置,如果沒有正確設置locale,可能無法正確顯示貨幣符號或格式。
在調用money_format之前,需要使用setlocale函數設置適當的區域環境。例如,設置為美國的英語環境:
<code> setlocale(LC_MONETARY, 'en_US.UTF-8'); </code>如果你的系統不支持這個locale,需要根據服務器環境調整。
money_format的格式字符串以%開頭,後面可以有多個修飾符:
%i :國際貨幣格式(含貨幣代碼,如USD)
%n :本地貨幣格式(含貨幣符號)
假設我們有一個金額1234.5,想用money_format輸出帶美元符號,千分位,並保留兩位小數的格式。
<code> <?php // 設置區域環境為美國英語setlocale(LC_MONETARY, 'en_US.UTF-8');$amount = 1234.5;
// 使用%n格式輸出本地貨幣格式,默認保留兩位小數
$formatted = money_format('%n', $amount);
echo $formatted;
?>
</code>
輸出結果通常是:
<code> $1,234.50 </code>money_format函數只在Linux/Unix系統有效,Windows環境不支持。
PHP 7.4之後官方建議使用NumberFormatter類代替money_format ,因為後者已標記為廢棄。
如果需要跨平台使用且兼容PHP新版本,推薦使用NumberFormatter 。
使用NumberFormatter實現相同功能:
<code> <?php $amount = 1234.5; $formatter = new NumberFormatter('en_US', NumberFormatter::CURRENCY); echo $formatter->formatCurrency($amount, 'USD'); ?> </code>輸出同樣是:
<code> $1,234.50 </code>雖然money_format在很多舊項目中依然被使用,但出於兼容性和未來維護的考慮,建議使用NumberFormatter類來格式化貨幣。本文演示瞭如何用money_format輸出保留兩位小數的標準貨幣格式,並提供了現代替代方案,方便開發者根據需求靈活選擇。