この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:2
更新日時:2026-06-10 13:53:28
タイトル: 数値のカンマ区切り(number_format)
説明
PHP で数値をカンマ区切り (3桁区切り) で表示するには number_format 関数を使用します。金額表示や統計レポートなど、人間が読みやすい数値表示で頻繁に使われます。
構文
|
string number_format(
float $num,
int $decimals = 0,
string $decimal_separator = ".",
string $thousands_separator = ","
): string
|
引数
| 引数 | 意味 |
$num | 変換する数値 |
$decimals | 小数点以下の桁数 (省略時は 0) |
$decimal_separator | 小数点記号 (省略時は .) |
$thousands_separator | 3 桁区切り記号 (省略時は ,) |
実装例
|
<?php
echo number_format(1000); // 1,000
echo number_format(1234567); // 1,234,567
echo number_format(1234.5678, 2); // 1,234.57
echo number_format(1234567.89, 2, '.', ','); // 1,234,567.89
echo number_format(1234567.89, 0, ',', '.'); // 1.234.568 (欧州式)
echo number_format(0.5); // 1 (四捨五入)
echo number_format(-1234.5, 2); // -1,234.50
|
テンプレートでの利用
|
<p>合計: ¥<?= number_format($total) ?></p>
|
出力結果
よくある利用パターン
| 用途 | コード | 出力例 |
| 日本円 (整数) | "¥" . number_format($yen) | ¥12,345 |
| USD (小数2桁) | "$" . number_format($usd, 2) | $1,234.56 |
| 欧州式 | number_format($n, 2, ',', '.') | 1.234,56 |
| 千単位カット | number_format($n / 1000, 1) . "k" | 12.3k |
関連関数との比較
| 関数 | 用途 |
number_format | カンマ区切り・小数桁制御 (本稿) |
sprintf("%.2f", $n) | 書式文字列での整形 (カンマなし) |
round($n, 2) | 四捨五入のみ (文字列にしない) |
NumberFormatter (intl) | ロケール対応の本格的な書式化 (通貨記号等) |
ロケール対応の例 (intl 拡張)
|
$fmt = new NumberFormatter('ja_JP', NumberFormatter::CURRENCY);
echo $fmt->formatCurrency(1234567, 'JPY'); // ¥1,234,567
$en = new NumberFormatter('en_US', NumberFormatter::CURRENCY);
echo $en->formatCurrency(1234.5, 'USD'); // $1,234.50
|
注意点
- 戻り値は文字列。数値演算をしたい場合は元の数値を残しておく
- 四捨五入される (0.5 → 1)。誤差を避けたい金額計算は
BCMath や NumberFormatter
- マイナス記号は素のハイフン (
-1,234)。会計表記 (赤字括弧等) は NumberFormatter を使う
- 非数値・nullを渡すと PHP 8 以降では型エラーになることがある。事前に
(float) キャストか ?? 0
- 桁区切りの基準は「3桁」固定。インド表記 (1,23,456) には対応していない
関連