phpで0埋めはどうやるのか?桁数を指定してゼロパディングする方法

phpで0埋めはどうやるのか?桁数を指定してゼロパディングする方法
目次
  1. 0埋めって?
  2. sprintfを使う方法
  3. str_padを使う方法

0埋めって?

ゼロ埋め(0パディング)とは、数値を表示する際に先頭や末尾に0を付け足す処理のことです。基本的には数値を見やすく表示するために行われます。

用途はいろいろあるかと思いますが、筆者の場合は日付を表示する際によく使っています。例えばですが、下記のように日付を並べて表示すると少し見づらいかと思います。

9月1日
9月21日
10月3日
10月11日

ですので、もし表示しようとしている値が一桁の数値の場合にはゼロ埋めをすることで見やすくします。

09月01日
09月21日
10月03日
10月11日

これで見やすくなりましたね!

このように一定の桁数まで0で埋める処理となっているので、0埋めと呼ばれます。また、CSSにおけるpaddingのようでもありますので、0パディングとも呼ばれています。それでは、このゼロ埋めの方法を見ていきましょう。

sprintfを使う方法

sprintfは、フォーマットされた文字列を返却する関数です。

sprintf( format, 'input' );

format部分で変換の方法を指定します。0埋めをしたい場合には「%02d」「%03d」などを指定します。input部分には処理を行いたい文字列を渡します。

<?php
echo sprintf('%02d', 9) . '月' . sprintf('%02d', 21) . '日';
echo 'ID:' . sprintf('%05d', 1);
<実行結果>
09月21日
ID:00001

上記のように「%02d」と指定した場合、「渡された値を10進数の数値として扱い2桁になるまで0で埋める」といった意味になります。dは10進数を表し、その手前の数値で上限の桁数指定をし、0で0埋めることを指示しています。%は変数を扱う際のの$のようなものだと思えば問題ないでしょう。

このsprintf関数はformat部分の指定を変更することでゼロ埋め以外にも利用することができますが、ひとまず「%02d」といった形の指定でゼロ埋めが可能であることを覚えておきましょう!

str_padを使う方法

sprintfを使う方法以外にもstr_padを利用する方法でもゼロ埋めすることができます。

str_padは渡した文字列がある一定の長さに達するまで他の文字列で埋める関数です。

str_pad(  'input', length, 'pad', pad_type );

第一引数のinputで処理を行う文字列を渡します。。第二引数のlength部分では桁数指定を行います。第三引数のpadは何の文字によって埋めるかを指定します。第四引数のpad_typeというのは、渡した文字列の左側を埋めるのか(STR_PAD_LEFT)、右側を埋めるのか(STR_PAD_RIGHT)、あるいは左右両方から埋めるのか(STR_PAD_BOTH)といった方法を指定します。

0埋めを行う場合は、基本的に文字列の左側から0で埋めていくと考えられるので、下記のように指定します。

<?php
echo str_pad('9', 2, '0', STR_PAD_LEFT) . '月' . str_pad('21', 2, '0', STR_PAD_LEFT) . '日';
echo 'ID:' .('1', 5, '0', STR_PAD_LEFT);
<実行結果>
09月21日
ID:00001

このようにsprintfと比べてstr_padのほうが関数自体の動きは分かりやすいですが、引数の指定が多いため長くなりがちになっています。処理自体はstr_padのほうが早いといわれていますが、筆者は引数の少ないsprintfのほうを使っています。

どちらでも結果は同じになりますので、好きなほうを選んで使いましょう!

Tech 2 GO編集部
ライター
Tech 2 GO編集部

関連記事