X

【PHP】数値を3桁区切りカンマを入れたり、除去したりする方法

PHPで、数値を3桁区切り表記に変更する、便利な関数をご紹介します!
Webページなどで、桁数を多い数字を表示するような場合は、3桁区切りにした方が、格段にみやすくなるので、絶対にやった方が良いですね。

number_format を使おう


まずは、整数で使ってみる


めちゃくちゃ簡単。number_formatという関数を使えば、一撃です。
  
  <?php
    $number = 123456789;

    echo number_format($number);

    // 実行結果-> 123,456,789
    
  ?>


という感じです。 number_format関数の引数に3桁区切りにしたい数値を入れれば、3桁区切りになった値が返ってきます。

小数点も入れてみる


number_format は 第2引数も取ることができます。 ここで指定するのは、小数第何桁まで表示するか、です。
  
  <?php
    $number = 123456789;

    echo number_format($number,2);

    // 実行結果-> 123,456,789.00


    echo number_format($number,5);

    // 実行結果-> 123,456,789.00000
    
  ?>


こんな感じです。
Webサービス、Webサイトによっては、数値の表記上、小数点も表示すべきシーンも出てくると思います。

3桁区切りカンマをなくしたい場合はどうするのか


「カンマを入れる」のは、number_formatで簡単に行えることがわかったと思います。
では逆に、「カンマ区切り表記からカンマを除去する」にはどうしたら良いか。

カンマ区切り表記の値は、「文字列」ですので、文字列内の特定の文字を変換させてあげれば良いです。
  
  <?php

    $kugiri_number = "123,456,789";

    $non_kugiri_number = str_replace(',', '',$kugiri_number);
    //文字列内にある”,”を""に変換

    echo (int)$non_kugiri_number;

    // 実行結果-> 123456789
    
  ?>


str_replace は、文字列の中の指定の文字を別の文字に変換できる関数です。

第1引数で、変換したい文字を指定。
第2引数で、変換後の文字を指定。上記の例では、「””」とすることで、カンマを除去するようにしています。
第3引数で、対象の文字列を指定します。

なお、上記の例では、「(int)」というものをしていますが、これは値の型を数値型にしています。

str_replace だけだと、文字列のままで変換されて、その後計算をしようとしてもうまくいかなくなる可能性が出てくるので、数値型として定義し直しています。
必須の処理ではありませんが、数値として扱いたい場合は、思いもよらないバグにつながる可能性があるので、型の定義はしておいた方が良いですね。

shirushiru: