PHPで通貨をフォーマットする:number_format関数とmoney_format関数の使い分け


  1. カンマ区切りの数値表現: 数値を3桁ごとにカンマで区切って、見やすく表示します。
  2. 小数点以下の桁数の調整: 指定した桁数まで小数点以下の数字を表示します。

基本的な構文

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関数の機能に満足できない場合は、数値フォーマットに特化したライブラリを使用するのも良いでしょう。以下に、いくつかの人気ライブラリをご紹介します。

  • コードの可読性
  • パフォーマンス
  • 必要な機能
  • フォーマットの複雑さ