【PHP】数値のケタ数を0で合わせる(0埋め・0パディング)する方法
2019/08/15
PHPで数値に前ゼロを付けてケタ数を合わせる方法を、"sprintf" を使って行う方法を備忘録としてポストします。
今回のポスト化は久々すぎて使い方を忘れてしまったので。
次からはここを見ればコピペできるって寸法です。
sprintfを使ってゼロ埋めする
ゼロ埋めするには str_pad を使ってもいいのですが、オプションが若干ややこしい印象。
なので私はいつも(といってもゼロ埋め自体の頻度は低いですが)sprintf を使っています。
今回はアンケートを回答したユーザに対して、整理番号(ID)を振るのに使用しました。
よくある「あなたの整理番号は00001です」ってやつです。
書式
sprintfの書式をおさらい。
sprintf ( string $format [, mixed $args [, mixed $... ]] ) : string
フォーマット文字列 format に基づき生成された文字列を返します。
sprintfは第一引数にフォーマット文字列(変換指定子)を記述し、そのフォーマットに対して第二引数以降を当て込んでいきます。
0埋めを行う場合は「%02d」「%03d」などを使って行います。
「%02」で「0」で埋めて2ケタにする、「%03」で「0」で3ケタにする、と覚えておけば大丈夫だと思います。
凡例
1 2 3 |
echo sprintf('%02d', 1); // 01 echo sprintf('%03d', 1); // 001 echo sprintf('あなたの整理番号は%04dです', 1); // あなたの整理番号は0001です |
使用例
今回、私が作成した整理番号を作成するコードは以下のようにしてみました。
1 |
$customer_code = date('d') . sprintf('%04d', $lastinsert_customer_id) . date('m'); |
$lastinsert_customer_id は、DBにインサートしたユーザIDが入っており、0で埋めて4ケタとフォーマットしています。
そのフォーマット4ケタを「月」と「日」で囲むという形です。
例として、7月28日に作成された整理番号としては「07000128」といった形です。
https://www.php.net/manual/ja/function.sprintf.php