PHP7.4.1におけるnumber_format関数について。
$sum = 1000 + 150 + 0.036;
//①パラメータを1つ指定したパターン
$sum = number_format($sum);
echo $sum, '円です。';
//②パラメータを2つ指定しつつ変数をいれたパターン
$sum = number_format($sum, 2);
echo $sum, '円です。';
//③パラメータを2つ指定したパターン
$sum = number_format(1150.036, 2);
echo $sum, '円です。';
//④パラメータを4つ指定したパターン
$sum = number_format(1150.036, 2, '+', '++');
echo $sum, '円です。';
number_format関数を使うと、パラメータに指定した数値に会計表記のように3桁ごとにカンマが入ります。
つまり、10000円が10,000円になります。
上記のプログラムの出力結果は、それぞれ以下のようになります。
①の出力結果
1,150円です。
②の出力結果
1,150.04円です。
③の出力結果
1,150.04円です。
④の出力結果
1++150+04円です。
number_format関数には、number_format(aa, bb, 'cc', "dd"); の形式で4つのパラメータが入ります。
3番目と4番目の値は、シングルクオーテーションかダブルクオーテーションのどちらかで囲う必要があります。
aaには関数処理の対象となる数値が入ります。
aaは省略不可能なパラメータです。
bbには小数点以下いくつまでの値を表示するのか指定する整数が入ります。
bbは省略可能なパラメータです。
またはbbに0を記入しても、bbを省略したときの同様の結果が得られます。
ccには小数点を表す記号であるピリオドを変換するための文字や文字列が入ります。
④の出力結果ではccに+を指定しているので、ピリオドは+に置き換わっています。
ちなみにここの値は、’あいう’でも”4_%”でも何でもOKです。
ちなみにccのパラメータを入力する場合は、4番目のddのパラメータの記入も必須となります。
aaとbbとccの3つしかパラメータが指定されていない場合は、PHPはエラーを吐いて動作をストップします。
ddにはカンマを変換するための文字や文字列が入ります。
④の出力結果ではddに++を指定しているので、カンマは++に置き換わっています。
ちなみにここの値も、’4-j’でも”総理大臣”でも何でもOKです。
このnumber_format関数の3番目と4番目のパラメータの使い道は、はっきり言ってよく分かりません。
どのような場面を想定して用意されたのか、皆目見当もつきません。
なので、number_format関数のパラメータは1番目と2番目だけを覚えていれば、それで事足りるように思います。
あと、一度number_format関数で処理した変数をもう一度number_format関数で処理した場合は、挙動がおかしなことになります。
エラーこそでませんがNoticeと表示されて、出力される値が強制的に1となってしまいます。
なので、②のプログラムを単体で処理した場合は上記のような出力結果となるのですが、①のプログラムと②のプログラムを連続的に処理した場合は、②の出力結果は「1,150.04円です」ではなく「1.00円です」となってしまいます。
以上です。