フリーランス|WEB 制作経験丸7年、制作会社様からのご依頼に丁寧・高クオリティでお手伝いいたします。 IRODORI DESIGN

B L O G

【PHP関数】数値をカンマ区切りする方法

PHP
カンマ区切り
プログラミング
関数紹介

こんにちは、岐阜・名古屋を拠点に全国各地からご依頼いただくWEBサイトを制作しているフリーランスエンジニアの寺井です。

日常生活で大きな数値は、3桁ごとにカンマで区切られることが一般的です。これにより、数値を一目で理解しやすくしています。
一方、PHPなどのプログラミング言語で取得した数値は、デフォルトではカンマ区切りされていません。しかし、PHPには数値を3桁ごとにカンマで区切るための便利な関数が提供されています。
この記事では、PHPを使用して数値を3桁ごとにカンマ区切りにする方法と、それに関連するサンプルコードを紹介します。

数値をカンマ区切り【number_format関数】

PHPで数値を3桁ごとにカンマ区切りで見やすくする場合、number_format関数を使用することで実現出来ます。
早速、字際にnumber_format関数を使用して数値がどうなるのか見てみましょう。

number_format関数の基本的な使い方

number_format関数の基本的な使い方は以下のとおりです。

string number_format ( float $number , int $decimals = 0 , string $dec_point = "." , string $thousands_sep = "," )

引数

$number:フォーマットしたい数値。
$decimals:小数点以下の桁数。引数を指定しない場合のデフォルトの小数点の桁数は0。
$dec_point:小数点の文字。引数を指定しない場合のデフォルトの小数点の文字は”.”。
$thousands_sep:千の区切り文字。引数を指定しない場合のデフォルトの区切り文字は”,”。

返り値

$numberを指定したフォーマットに変換した数値。

<?php
    // 桁数が多い場合
    echo number_format(1234567);

    // 小数点がある場合
    echo number_format(1234567.89);

    // 4桁以下の場合
    echo number_format(123);
?>

実行結果

1,234,567
1,234,568
123

このように桁数が多い場合は3桁ごとにカンマ区切りで読みやすい形式に変換してくれます。
小数点がある場合、第2引数を指定しない場合、引数は0として扱われ、小数点は四捨五入されます。

第2引数を指定

第2引数は指定していない場合、0となります。第2引数を指定することで、小数点以下の桁数を指定することが出来ます。

<?php
    // 小数点の桁数を指定
    echo number_format(12345.6789,1);

    // 小数点の桁数を0指定
    echo number_format(12345.6789,0);

    // カンマしたい数値以上の小数点の桁数を指定
    echo number_format(12345.6789,7);
?>

実行結果

12,345.7
12,346
12,345.6789000

第2引数に小数点以下の桁数を指定することで、数値はその桁数に四捨五入されて表示されます。0を指定した場合、第2引数を指定しないときと同じ結果が得られます。
一方、指定した桁数が対象の数値の桁数よりも大きい場合、その桁数に合わせて0が追加されます。

第3引数、第4引数を指定

最後に第3引数、第4引数を指定した場合を見ていきます。

<?php
    // 第3引数を指定
    echo number_format(12345.6789,1,"-");

    // 第3引数、第4引数を指定
    echo number_format(12345.6789,1,"-","/");

    // 第2引数を0、第3引数、第4引数を指定
    echo number_format(12345.6789,0,"-","/");

    // 小数のない数値、第2引数を0、第3引数、第4引数を指定
    echo number_format(12345,0,"-","/");
?>

実行結果

(第3引数だけの場合、エラーにより出力無し)
12/345-7
12/346
12/345

第3引数を指定する場合、必ず第4引数も併せて指定する必要があります。上記のサンプルソースでは、3桁ごとの区切り記号を-(ハイフン)に、小数点の記号を/(スラッシュ)に変更しました。しかし、3つめや4つめの例のように小数点以下を表示しない数値の場合、第4引数の値は出力されません。

一般的には、3桁ごとの区切りは,(カンマ)、小数点は.(ドット)として認知されています。このため、これらの記号を他のものに置き換える必要性は少ないと思います。

まとめ

この記事では、PHPのnumber_format関数について詳しく解説しました。基本的には数値をカンマ区切りにするだけのシンプルな関数で、難しい使い方は要求されません。記事の執筆中に、第3引数や第4引数が指定できることを初めて知りました。正直、これがいつどのような場面で必要になるのかは不明ですが、そのような使い方も存在することを学べて有益でした。
number_formatは、シンプルながらも使用頻度の高い関数です。ユーザビリティを向上させるためにも、この関数を適切に活用していきたいと思います。