icon
icon

PHPで数値を3桁ずつカンマで区切りにする方法を現役エンジニアが解説【初心者向け】

初心者向けにPHPで数値を3桁ずつカンマで区切りにする方法について現役エンジニアが解説しています。PHPで数値をカンマ区切りにする方法には、number_format関数を使う方法があります。number_format関数とは、数値を渡すと3桁ずつカンマで区切った値を返す処理を行います。

テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日  調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名  調査手法:インターネット調査

監修してくれたメンター

井上 祐介

NEC・Microsoftの認定インストラクター。Z80アセンブラ・C++・C#・PHP・Javaなどの経験を経て業務で使用するプログラムの開発や新入社員プログラミング研修の講師を行った。

今回は、PHPで数値を3桁ずつカンマで区切りにする方法について、テックアカデミーのメンター(現役エンジニア)が実際のコードを使用して初心者向けに解説します。

目次

そもそもPHPについてよく分からないという方は、PHPとは何なのか解説した記事を読むとさらに理解が深まります。

 

田島悠介

今回は、PHPに関する内容だね!

PHPで数値を3桁区切りで出力させるには、ゆかりちゃんだったらどんなプログラムを作るかな?

大石ゆかり

ズバリ、表示形式の数値で「桁区切り(,)を使用する」ですか!?

田島悠介

それは表計算ソフトExcelのセルの書式設定だよ。

大石ゆかり

それじゃあ・・・String.formatで「”%,d”」ですか!?

田島悠介

それはJavaだよ・・・(というか、よく知ってるね)

大石ゆかり

う~ん。それじゃあ、わからないです。

田島悠介

PHPでは数値を3桁区切りするときに使われる関数があるから見てみよう。

大石ゆかり

お願いします!

この記事は、number_format関数を使用して数値を3桁ずつカンマ区切りにする方法について記載した記事です。

PHPでの開発にあまり慣れていない方でも理解できる内容となっています。

number_format関数とは

数字を千位毎にグループ化して3桁ごとにカンマをつけた文字列にフォーマットする関数です。

例えば1000という数字があったら、1,000のようにフォーマットされます。

もちろん、3桁未満の数値ならそのまま文字列に変換されます。

number_format関数のパラメータで3桁区切りの文字や小数点の区切り文字も変えられます。

 

number_format関数を利用して数値を3桁ずつカンマで区切りにする方法

それでは、数値を3桁ごとにカンマで区切るためにnumber_format関数の使用方法について見ていきましょう。

使用方法:

number_format(数値)

上記のようにnumber_format関数に数値を引数で渡すことで、数値を3桁ずつカンマで区切った値を返却します。

[PR] PHPを学んで未経験からWebエンジニアを目指す方法とは

実際に書いてみよう

それでは、実際にnumber_format関数で数値を3桁ずつカンマで区切ってその結果を見てみましょう。

サンプルコード:

<?php
// 数値を3桁ごとにカンマで区切って出力
echo number_format(1000000);
?>

 

実行結果:

1,000,000

 

上記の例では、1000000という数値をnumber_format関数に引数として渡して、3桁ごとにカンマで区切った値にフォーマットし出力しています。

実行結果から分かる通り引数で渡した数値が3桁ごとにカンマで区切られていることが確認できます。

 

小数に3桁区切りをつける

大石ゆかり

整数に3桁区切りをつける方法はわかったんですが、小数を3桁区切りにすると小数部分がなくなっちゃいました・・・

echo number_format(123.45678);

実行結果:

123
田島悠介

number_formatで小数を扱うには、2つ目の引数で小数点以下の桁数を指定する必要があるよ。

この2つ目のパラメータが省略された場合には、小数点以下が出力されないから注意する必要があるね。

number_formatの2つ目のパラメータを指定すると、出力する小数点以下の桁数を指定できます。

使用方法:

number_format(数値, 出力する小数点の桁数)

小数点の桁数指定が数値の小数点の桁数より大きい場合は「0」ゼロで埋められます。

サンプルコード:

<?php
// 数値を3桁ごとにカンマで区切って出力
echo number_format(123.45678, 0);	//小数点以下が出力されない(デフォルト)
echo "\n";
echo number_format(123.45678, 3);	//小数点以下を3桁 出力する
echo "\n";
echo number_format(123.45678, 5);	//小数点以下を5桁 出力する
echo "\n";
echo number_format(123.45678, 8);	//指定桁数が多い場合「0」が出力される
?>

 

実行結果:

123
123.457
123.45678
123.45678000
大石ゆかり

田島メンター!小数点の桁数の指定が少ないと四捨五入になっています!

切り捨てじゃないんですね・・・

echo number_format(123.45678, 3);

実行結果:
小数点が切り捨てられる

田島悠介

そうなんだよ。

number_format関数は小数点以下の指定した桁数以上なら四捨五入してしまうから注意が必用だね。

大石ゆかり

もしかして、2つ目の引数を指定せずに小数を指定すると四捨五入されちゃうんでしょうか?

田島悠介

次のPHPコードと実行結果を見てくれるかな。

echo number_format(12345.678);

実行結果:

12,346
大石ゆかり

見事に1の位が四捨五入されています・・・

田島悠介

そんなわけで、number_format関数に小数を指定する場合は注意が必用だね。

PHPで経理のプログラムを作る場合、知らない間に四捨五入された「1円」が入ってしまうこともあるかもね。

大石ゆかり

ひえー。

そんなことになったら大変です!

気を付けます!

 

3桁区切りの文字列を数値に戻す方法

3桁区切りが入った文字列「123,456,789」を「123456789」のようにカンマなしの数値に戻せます。

表計算ソフトなどで出力されたCSV形式のファイルをPHPで読み込むときなどに使えるでしょう。

str_replace関数を使うと、文字列を置換できます。

使用方法:

str_replace(検索文字列, 置換文字列, 操作対象文字列);

str_replace関数で文字列を削除するには、2つ目の置換文字列に””(空白文字)を指定します。

str_replace関数でカンマを削除してみましょう。

$num = number_format($num);	//3桁区切りにする
echo $num . "<br>\n";
$num = str_replace(",", "",$num);	//3桁区切りの解除(カンマを削除)
echo $num;

実行結果:

123,456,789
123456789

このようにstr_replace関数でカンマを削除し、数値に戻すことができます。

大石ゆかり

文字列操作でカンマを削除できるんですね。

そういえば型変換なんてありましたけど、(int)で3桁区切りの文字列を整数に型変換できますか?

田島悠介

いい質問だね。

実際にやってみるといいよ。

大石ゆかり

普通に文字列から整数にできそうなんだけどなあ?

echo (int)"12,345,678";

実行結果:

12

うわあ。

ほとんど切り捨てられちゃいました。

田島悠介

PHPの型キャストでは、最初の数値として認識できる文字列までしか変換してくれないから左端の「12,」からカンマまでの数字「12」だけが変換されたんだよ。

大石ゆかり

なるほどおー。

いろいろ勉強になりますね。

 

まとめ

以上、number_format関数を使用して、数値を3桁ごとにカンマで区切る方法についてご紹介しました。

このように画面に数値をカンマ区切りで表示したいなどの要件があった場合にnumber_format関数を使用した方法を採用するといいかもしれません。

指定した小数点以下の桁があると四捨五入されるので、注意しましょう。

監修してくれたメンター

井上祐介

テックアカデミーのメンター。

NEC・Microsoftの認定インストラクター。

学生時代からのプログラミング経験を経て業務で使用するプログラムの開発を行う。

新入社員研修でプログラミング初心者がサーバーサイドプログラムを組めるようになるまでの講師を担当した。

プログラム作成初心者がプログラミングを楽しめる講師でありたいというモットーがある。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

 

PHPを学習中の方へ

これで解説は終了です、お疲れさまでした。

  • つまずかず「効率的に」学びたい
  • 副業や転職後の「現場で使える」知識やスキルを身につけたい

プログラミングを学習していて、このように思ったことはありませんか?

テックアカデミーのPHP/Laravelコースでは、第一線で活躍する「プロのエンジニア」が教えているので、効率的に実践的なスキルを完全オンラインでしっかり習得できます。

合格率10%の選考を通過した、選ばれたエンジニアの手厚いサポートを受けながら、PHP/Laravelを使ったWebアプリケーション開発を学べます。

まずは一度、無料体験で学習の悩みや今後のキャリアについて話してみて、「現役エンジニアから教わること」を実感してみてください。

時間がない方、深く知ってから体験してみたい方は、今スグ見られる説明動画から先に視聴することをおすすめします!