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










コメント