PHP学習している時に必要になった「月日を2桁にする方法」を備忘録として書いておきます。
単純な話しなのですぐに終わります。
実現したかったこと
フォームに入力した年月日データをSQLで検索かけてダウンロードしたかったため、フォームを作成したのですが、for文で作ると月日が1桁になってしまうため、SQLが保持しているデータと合わないため2桁にする必要がありました。
※SQLで保持しているデータは「MMDD」形式なので
そのため、何とかして1桁を2桁にしたかったことがきっかけです。
以下のコードを書いていました。
function pulldown_month() { for($i = 1; $i <= 12; $i++) { echo '<option value="'.$i.'">'.$i.'月</option>'; } } function pulldown_day() { for($i = 1; $i <= 31; $i++) { echo '<option value="'.$i.'">'.$i.'日</option>'; } }
これだと結果が「1月、2月、3月・・・12月」と「1日、2日、3日・・・31日」となってしまいます。
そしてフォームで入力されるデータは「01」や「02」というフォーマットなので入力したデータを2桁にしてあげる必要があります。
ググってみたところ「sprintf」関数で実現できるとのことでした。
1桁を2桁にする方法
それでは実際に「sprintf」を使って、1桁を2桁にしてみます。
- コード
$month = sprintf('%02d', $month); $day = sprintf('%02d', $day);
- コードの説明
コード | 説明 |
$month | フォームで入力した月が入ってます。例:1、2・・ |
$day | フォームで入力した日が入ってます。例:1、2・・ |
sprintf | 第1引数の’%02d’で2桁にしています。 第2引数は2桁にする対象になります。 |
こうすることで「1,2」が「01,02」という風に2桁になります。
「%02d」を「%03d」にすると3桁(001,002)という風になります。
参考URL
参考にしたサイトのURLです。
PHPで0埋めをする2つの方法- sprintf関数とstr_pad関数
たまにこういうのって必要になるんですよねぇ。
以上です。ありがとうございました。
コメント