【PHP】PHPによる桁の0埋め方法「sprintf」
今回は「数値の0埋め処理」の方法をメモしていきます。カレンダーの日付や小数点の桁数などに使うテクニックで、たまに必要になるテクニックだと思います。個人的にかなり癖のある関数を用いることになり、0埋め以外にも様々なことができるようなのですが、とりあえず今回は0埋め処理だけの方法をメモしていきます。
そもそも0埋め処理って何?
0埋め処理と聞いてピンときた方はどれだけいらっしゃるでしょうか?私も最初0埋め処理だとかゼロパディングだとかの言葉の意味が分かりませんでした。
分かりやすい例で言えばやはり月日でしょうか?0埋め有りと無しの場合を確認してみましょう。
0埋め無し:5月5日
0埋め有り:05月05日
カレンダーは12月、つまり2桁まで表示されるものですよね?1桁の時に2桁目に0を入れた処理を0埋め処理や、ゼロパディングと言います。
これをいちいち手作業でやっていると少々面倒ですよね?これをPHP関数で自動で入力してみましょう。
「sprintf」を使う方法
sprintf関数を使うことで0埋め処理を実現できます。早速サンプルを見てみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 |
<?php //sprintf( format(表示する桁数に満たない場合に埋める文字), 'input(入力値)' ); echo sprintf('%02d', 5) . '月' . sprintf('%02d', 5) . '日'; echo " "; echo 'パスワード:' . sprintf('%05d', 22); //実行結果 05月05日 パスワード:00022 ?> |
サンプルのように「sprintf(’%02d’,入力値)」と入力することで、入力値が「02d」、つまり2桁に満たない場合は2桁目に”0”を埋めます。
「sprintf(’%03d’,5)」と入力した場合、「005」という文字列が出力されるわけですね。
spirinif関数は「%〇d」以外の書き方で様々な使い方ができますが、今回は0埋め処理ということで、つまりは「%〇(埋める文字)△(桁数)d,入力値」という形で覚えておけばいいと思います。
「str_pad」を使う方法
sprintfを使う方法以外にもstr_padを利用する方法でもゼロ埋めすることができます。
str_padは渡した文字列がある一定の長さに達するまで他の文字列で埋める関数です。
1 2 3 4 5 6 7 8 9 10 11 12 |
<?php //str_pad( 'input(入力値)', lenght(最大桁数), 'pad(最大桁数に満たない場合埋める文字)', pad_type ); echo str_pad("5","2","0",STR_PAD_LEFT) . '月' . str_pad("5","2","0",STR_PAD_LEFT) . '日'; echo " "; echo 'パスワード:' . str_pad("55","5","0",STR_PAD_RIGHT); //実行結果 05月05日 パスワード:55000 ?> |
第一引数のinput(入力値)で処理を行う文字列を渡します。第二引数のlength(最大桁数)部分では桁数指定を行います。第三引数のpad(最大桁数に満たない場合埋める文字)は何の文字によって埋めるかを指定します。第四引数のpad_typeというのは、渡した文字列の左側を埋めるのか(STR_PAD_LEFT)、右側を埋めるのか(STR_PAD_RIGHT)、あるいは左右両方から埋めるのか(STR_PAD_BOTH)といった方法を指定します。
終わりに
それでは今回はここまでです。「sprintf」、「str_pad」ともにどちらも0埋め処理といわず、任意の文字で空の桁を埋めることができます。これらの関数はまだ色々使い方があり奥が深いものですが、今回はこの使い方だけ覚えて、実戦で使えるようにしておきたいですね。
それでは今回はここまでです。お疲れ様でした(・ω・)ノシ