【PHP】数字を指定の桁数にフォーマット(ゼロ埋め)

PHPで数字を扱う際、桁数を揃えたい場面はよくあります。
例えば、会員番号や注文番号を「00023」のように表示したい場合です。
この記事では、PHPで数字を指定の桁数に揃えてゼロ埋め(0埋め)する方法をわかりやすく解説します。
基本的な方法から応用例まで、サンプルコードと一緒に紹介します。
数字をゼロ埋めにする基本の方法
PHPで数字をゼロ埋めする場合、次の2つの関数を利用できます。
- sprintf()
- str_pad()
1. sprintf()を使う方法
sprintf()は、文字列をフォーマットして返す関数です。
数字を指定桁数にゼロ埋めする場合は、%0Ndという書式を使います。
例えば、「sprintf("%02d", "数字");」とすると、指定した数字が2桁にフォーマットされます。
実際に使い方は、こちらのコードを参考にしてください。
<?php
$number = 23;
//5桁にゼロ埋め
$formatted = sprintf("%05d", $number);
echo $formatted; //出力: 00023
?>
- %05dの意味
- %:フォーマット開始
- 0:ゼロ埋め
- 5:桁数
- d:整数
2. str_pad()を使う方法
str_pad()は、文字列を指定の長さに揃える関数です。
左側にゼロを埋める場合は、STR_PAD_LEFTを指定します。
<?php
$number = 23;
//5桁にゼロ埋め
$formatted = str_pad($number, 5, "0", STR_PAD_LEFT);
echo $formatted; //出力: 00023
?>
- 引数の意味
- 対象の文字列
- 目標の文字数
- 埋める文字(今回は “0”)
- 埋める方向(左側)
3. どちらを使えばいい?
sprintf()とstr_pad()、どちらの関数を使えば迷った場合は、以下の内容を参考にしてください。
sprintf():数値フォーマットが簡単、コードがすっきりstr_pad():文字列として柔軟に操作できる
ちなみに、私はsprintf()関数の方が引数も少なく分かりやすいので、よく使っています。
処理速度もsprintf()の方が早いみたいです。
参考:http://php.net/manual/ja/function.str-pad.php
応用編
今回の関数を応用したサンプルコードもいくつか紹介します。
もし使えそうなコードがあれば、自由にコピーしてください。
動的に桁数を指定する
<?php
$number = 42;
$digits = 8;
echo str_pad($number, $digits, "0", STR_PAD_LEFT); //00000042
?>
数字と文字列を組み合わせる
<?php
$prefix = "ID-";
$number = 78;
echo $prefix . sprintf("%04d", $number); //ID-0078
?>
日付や時間
<?php
$hour = 9;
$minute = 5;
echo sprintf("%02d:%02d", $hour, $minute); //09:05
?>
配列やループでまとめてゼロ埋め
<?php
$numbers = [1, 23, 456];
foreach ($numbers as $num) {
echo str_pad($num, 4, "0", STR_PAD_LEFT) . "\n";
}
//出力:
//0001
//0023
//0456
?>
注意点・よくあるミス
今回紹介した関数を使用する場合、次のような点に注意してください。
- 文字列に使う場合の挙動
数値ではなく文字列に対してsprintf("%05d", "23a")を使うと予期しない結果になることがあります。 - 指定桁数より長い数字
例えば、sprintf("%03d", 12345)は12345のまま。桁数は切り捨てられません。 - 浮動小数点やマイナスの数字
– 小数点は整数部分だけゼロ埋めされます
– マイナスの場合、符号も含めて桁数を数えるので注意
まとめ
PHPを使って、数字を指定の桁数にゼロ埋めする場合には、sprintf()とstr_pad()のいずれかの関数を使用できます。
数字のゼロ埋めは簡単で、見やすさやフォーマットの統一に非常に役立ちます。
PHPを使ってコードを書かれている方は、ぜひ参考にしてください。
























