Money_format()は、現在のロケール(領域設定)を使用して通貨文字列として数字をフォーマットする関数です。その構文は次のとおりです。
string money_format ( string $format , float $number )
で:
$フォーマットは、 sprintf()で使用される形式と同様のフォーマット制御文字列です。
$番号は、フォーマットする番号(金額)です。
Money_format()が正しく動作するには、最初にローカリゼーション環境を設定する必要があります。 Setlocale()関数を使用して設定できます。たとえば、米国地域のローカライズされた形式に設定してください。
setlocale(LC_MONETARY, 'en_US.UTF-8');
さまざまなシステム(特にWindowsおよびLinux)がロケールを異なる方法でサポートすることに注意してください。対応する言語パックをインストールする必要がある場合があります。
以下は、フォーマット量の完全な例です。
setlocale(LC_MONETARY, 'en_US.UTF-8');
$amount = 1234.56;
echo money_format('%.2n', $amount);
出力は次のとおりです。
$1,234.56
で:
「%.2N」とは、小数点を使用した後に2桁の通貨形式が保持されることを意味します。
nは、ロケールで定義された通貨形式タイプです。
.2小数点後の数字数を指定します。
ユーザー言語に応じて異なる形式の量を動的に表示する場合は、 setlocale()と組み合わせて動的に設定できます。
$amount = 9876.54;
setlocale(LC_MONETARY, 'de_DE.UTF-8');
echo "ドイツ形式: " . money_format('%.2n', $amount) . "\n";
setlocale(LC_MONETARY, 'fr_FR.UTF-8');
echo "フランス語形式: " . money_format('%.2n', $amount) . "\n";
出力:
ドイツ形式: 9.876,54 €
フランス語形式: 9 876,54 €
これは、国際的なWebサイト(https://m66.net/ecommerce/intl-supportなど)にとって非常に実用的です。
前述のように、 Money_format()はPHP 8で削除されています。PHPの新しいバージョンを使用している場合は、代わりに( INTL拡張子から) NumberFormatterを使用することをお勧めします。
$amount = 5678.90;
$fmt = new \NumberFormatter('en_US', \NumberFormatter::CURRENCY);
echo $fmt->formatCurrency($amount, 'USD');
出力:
$5,678.90
Numberformatterの使用は、新しいバージョンと互換性があるだけでなく、より強力な国際的なサポートを提供し、生産環境にも適しています。