PHPで通貨をフォーマットする:number_format関数とmoney_format関数の使い分け
- カンマ区切りの数値表現: 数値を3桁ごとにカンマで区切って、見やすく表示します。
- 小数点以下の桁数の調整: 指定した桁数まで小数点以下の数字を表示します。
基本的な構文
number_format($number, $decimals, $decimal_separator, $thousands_separator);
引数
$thousands_separator
: 千の位の区切り記号 (省略可、デフォルトは ",")$decimal_separator
: 小数点記号 (省略可、デフォルトは ".")$decimals
: 小数点以下の桁数 (省略可、デフォルトは0)$number
: フォーマット対象の数値
具体的な使い方
例1:カンマ区切りの表現
$number = 123456789;
echo number_format($number); // 出力: 123,456,789
例2:小数点以下の桁数の調整
$number = 123.456789;
echo number_format($number, 2); // 出力: 123.46
例3:カスタム区切り記号の使用
$number = 123456789;
echo number_format($number, 0, ".", " "); // 出力: 123 456 789
- フォーマットされた数値を数値として使用するには、
floatval
関数などを使って変換する必要があります。 number_format
関数は、数値を文字列に変換します。
- 数量の表示
- 統計データのレポート作成
- 金額の表示
例1:通貨のフォーマット
$price = 1234.56;
$currency = "円";
echo number_format($price, 2) . " " . $currency; // 出力: 1234.56 円
例2:負の数のフォーマット
$number = -12345.6789;
echo number_format($number, 2); // 出力: -12,345.68
例3:科学的記法への変換
$number = 1234567890123456789;
echo number_format($number, 0, ".", "e"); // 出力: 1.23457e+16
例4:特定の桁数に固定
$number = 123.4567;
echo number_format($number, 3, ".", ""); // 出力: 123.456
これらの例はほんの一例です。number_format
関数は、様々なフォーマットに対応しているので、自分のニーズに合わせて自由にカスタマイズすることができます。
上記以外にも、以下のような応用例が考えられます。
- 人口統計データをカッコで囲んで表示(例:100万人 (2023年))
- 長尺の寸法をメートルとセンチメートルで表示(例:10.23m -> 10m23cm)
- 商品価格のバーゲン表示(例:1000円 -> 500円!)
手動フォーマット
簡単なフォーマットであれば、str_replace
関数やsprintf
関数などを組み合わせて手動でフォーマットすることができます。
// カンマ区切りの表現
$number = 123456789;
$formatted = str_replace(",", "", number_format($number)); // カンマを削除
$formatted = str_replace(".", ",", $formatted); // 小数点をカンマに置き換え
echo $formatted; // 出力: 123,456,789
// 小数点以下の桁数の調整
$number = 123.456789;
$formatted = sprintf("%.$decimalsf", $number, $decimals);
echo $formatted; // 出力: 123.46 (小数点以下2桁)
money_format関数
money_format
関数は、number_format
関数と似ていますが、以下の点が異なります。
- 千の位の区切り記号を追加しない
- 小数点以下の桁数を自動的に調整する (小数点以下4桁まで)
- 通貨記号を自動的に追加する
$number = 1234.56;
echo money_format("%i", $number); // 出力: ¥1,235
第三次ライブラリ
number_format
関数の機能に満足できない場合は、数値フォーマットに特化したライブラリを使用するのも良いでしょう。以下に、いくつかの人気ライブラリをご紹介します。
- コードの可読性
- パフォーマンス
- 必要な機能
- フォーマットの複雑さ