本文へスキップ
BecomeCoder

PHPコース · 第5章 文字列・実践・Webへ · レッスン18

数と文字を整える ― number_format と sprintf

ブラウザで完結

導入

金額を「1,234,567円」と3桁区切りで見せる、小数を2桁に丸める、数字をゼロ埋めする――画面に出す前の見た目の調整は、Webでとても頻繁に登場します。PHP は専用の関数を用意しています。

説明

number_format() は数値を3桁区切りにします。第2引数を渡すと、小数点以下の桁数もそろえられます。

<?php
$price = 1234567;
echo number_format($price), "円\n";       // 1,234,567円

echo number_format(3.14159, 2), "\n";      // 3.14(小数2桁に丸め)
echo number_format(1000 * 1.1), "\n";      // 1,100(税込を3桁区切りで)

printf()sprintf() は、書式にそって値を埋め込む関数です。%s文字列)・%d(整数)・%.2f(小数2桁)・%03d(3桁ゼロ埋め)などのプレースホルダを使います。printf はそのまま出力し、sprintf は組み立てた文字列を返します

<?php
printf("%s は %d 点です\n", "田中", 85);        // 田中 は 85 点です

$msg = sprintf("在庫: %03d 個", 7);             // 3桁ゼロ埋め
echo $msg, "\n";                                // 在庫: 007 個

printf("税率は %.1f%% です\n", 10);             // 税率は 10.0% です(%% で % 自体を出す)

書式指定はやや暗号的ですが、「表の桁をそろえたい」「必ず小数2桁で見せたい」といった場面で威力を発揮します。

やってみよう

$price の値を変えて、3桁区切りがどう付くか確かめましょう。sprintf%03d%05d に変えると、ゼロ埋めの桁数が変わります。試してみてください。

演習

単価 1980 円・数量 3 の合計を求め、number_format を使って "合計: 5,940円" の形(3桁区切り)で表示してください。

ヒント1を見る

合計は 1980 * 35940

ヒント2を見る

echo "合計: " . number_format(1980 * 3) . "円\n";

実際に動かしてみよう

下のエディタにPHPを書いて「実行」を押すと、ブラウザ内で動く本物のPHP(php-wasm)で出力が表示されます。コードは必ず <?php で書き始めます。本文の例をそのまま試したり、書き換えたりしてみましょう(初回だけPHPの読み込みに少し時間がかかります)。

PHP — ブラウザ内で実行

ブラウザ内で動く本物のPHP(php-wasm / PHP 8.4)を読み込みます(初回のみ読み込みに少し時間がかかります)。
スクロールして表示された時点でも自動で読み込まれます。