PHPで0埋めする方法です。
0埋めとは、そのままの意味で、足りない桁数分を0で埋めることになります。
例えば2月3日を02月03日と表示したい場合です。
PHPの0埋めする方法
0埋めするにはsprintf()を使います。
sprintf()はフォーマットする関数で、0埋めのフォーマットに数値を当てはめるだけです。
0埋めする場合は次のように書きます。
1 2 |
$num = 8; echo sprintf('%03d', $num); |
これで結果は次のようになります。
1 |
008 |
簡単に0埋めできますね。
これは結構一般的でよく使うのですが、%03d の部分のルールっていまいち分からないです。
sprintf()の解説
第1引数の$フォーマットは、出力結果のフォーマットです。
第2引数以降の$値Nは、フォーマットに埋め込む値です。
戻り値はフォーマットされた文字列になります。
フォーマット(%03d)の % は、ここから置換文字列だということを示しています。
最後の d は、10進数の数値であることを定義します。
dの前の 3 は桁数です。
そして 0 は 0埋めの0になるようですが・・・ここだけいまいちピンときません。
何も書かないと半角スペースで指定した桁数まで埋めててくれます。
じゃ 1 を指定すると1埋めしてくれるのか?というとそうではないようです。
1 2 |
$num = 8; echo sprintf('%15d', $num); |
試しに上のようなコードを書いてみました。
結果は当たり前ですが半角スペースで15桁埋めてくれました(笑)
1 |
8 |
アルファベットやとどうだろう?
0 の代わりに z を入れてみました。
1 2 |
$num = 8; echo sprintf('%z5d', $num).$br; |
結果は、
1 |
5d |
となりました。
%zまでで1つのフォーマットと判断されたようですね。
10進数で0埋めする場合は、「%0~d」はお決まりで~に桁数を入れるという使い方!というルールなんだと思います。
まとめ
ちょっとしっくり来ない終わり方をしてしまいましたが、0埋めの方法に関してはこの書き方はよく使われます。
覚えておいて損はないです。
コメントを残す