PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

PHPのmoney_format()関数とは?使い方と注意点をわかりやすく解説

PHPのmoney_format()関数は、数値を通貨表記の文字列にフォーマットするための関数です。setlocale()で設定したロケール(地域設定)に基づいて通貨記号や桁区切りを適用でき、成功時にはフォーマット済みの文字列を、失敗時にはNULLを返します。

注意:money_format()関数は非推奨・削除済み

money_format()関数はPHP 7.4.0で非推奨となり、PHP 8.0.0で削除されました。そのため、最新の環境では呼び出すことができません。新規開発では、Intl拡張モジュールのNumberFormatterクラスnumber_format()関数を使うことが推奨されています。

構文

money_format(format, number)

パラメータ

  • format − フォーマット方法を指定する文字列です。「%」記号を起点に、フラグ・フィールド幅・小数点以下の桁数などを組み合わせて指定します。

  • number − フォーマット対象となる数値です。format文字列内の「%」記号の位置に挿入されます。

戻り値

フォーマットされた通貨文字列を返します。処理に失敗した場合はNULLを返します。

使用例1:ドイツ語ロケール(de_DE)でのフォーマット

まずsetlocale()でLC_MONETARYカテゴリにロケールを設定してから、money_format()を呼び出します。

<?php
   $input = 1000.56; 
   setlocale(LC_MONETARY, "de_DE"); 
   echo money_format("%.2n", $input);
?>

出力結果

1000.56

使用例2:イタリア語ロケール(it_IT)でのフォーマット

同じ書式指定子「%.2n」でも、ロケールが変われば通貨表記のルールも変わります。

<?php
   $number = 3825.91;
   setlocale(LC_MONETARY, 'it_IT');
   echo money_format('%.2n', $number) . "\n";
?>

出力結果

3825.91

まとめ

money_format()関数は、ロケール設定に応じて数値を通貨形式の文字列へ変換する関数でした。書式指定子「%n」(国際的な通貨形式)や「%i」(国内の通貨形式)などを組み合わせることで柔軟な表示が可能ですが、現在のPHPでは使用できません。代替手段としては、次のような方法があります。

  • NumberFormatterクラス:Intl拡張モジュールを利用し、ロケールごとの通貨フォーマットに対応。

  • number_format()関数:桁区切りや小数点以下の桁数を手動で指定するシンプルな方法。

  1. PHPのgregoriantojd()関数とは?構文・パラメータ・使用例を解説

    PHPのgregoriantojd()関数は、グレゴリオ暦(現在広く使われている暦)の日付をユリウス通日(Julian Day Count)に変換し、その結果としてユリウス日番号を返す関数です。ユリウス通日は、天文学や歴史上の日付計算などで利用される連続した日数表現であり、異なる暦同士の日付比較や計算を簡単に行えるのが特徴です。 注意 − グレゴリオ暦として有効な範囲は、紀元前4714年11月25日から紀元9999年12月31日以降までとなっています。この範囲外の日付を指定すると、正しい結果が得られない場合があります。 構文 GregorianToJD(month, date, year)

  2. PHPのfscanf()関数とは?使い方とフォーマット指定子を徹底解説

    PHPのfscanf()関数は、オープン中のファイルから入力を読み込み、指定されたフォーマットに従って解析するための関数です。パラメータを2つだけ渡して呼び出した場合、解析結果の値が配列として返されます。基本構文fscanf(file_pointer, format, mixed)パラメータの詳細file_pointer − fopen()関数を使って作成されたファイルシステムポインタリソースを指定します。format − 読み込むデータの形式(フォーマット)を指定します。使用できる主なフォーマット指定子は以下の通りです。%% − パーセント記号(%)そのものを返す%b − 2進数として読み込