導入
金額を「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 * 3 で 5940。
ヒント2を見る
echo "合計: " . number_format(1980 * 3) . "円\n";