PHPのゼロ埋め(0埋め)|str_padとsprintfの使い方と違い

by

カテゴリー:

数値の桁数を揃えて表示するために、PHPでゼロ埋め(0埋め)を使って表示上の整形を実現する方法です。まずは結論として、コピペしてすぐ使える最短コードを紹介します。

PHPのゼロ埋め(0埋め)はこの1行でOK

PHPで数値を0埋めするなら、str_padsprintf のどちらかを使います。どちらもコピペしてそのまま動きます。

$number = 7;

// 方法1: str_pad(0埋め専用でわかりやすい)
echo str_pad($number, 3, '0', STR_PAD_LEFT); // 007

// 方法2: sprintf(フォーマットをまとめて指定できる)
echo sprintf('%03d', $number); // 007

それぞれの仕組みと使い分け、そして日付や連番などの実用的な利用例は、この後で詳しく解説します。

そもそも0で埋めるとは、以下の状態を実現する処理です。

1
10
100

// ↓これらを0で埋める↓

001
010
100

例えば、以下の問題を解決するために必要になります。

  • 日付や時間
  • ファイル名やIDなどの識別子
  • アプリケーションの表示の統一性

システム状では数値で比較できれば充分ですが、システムとは人が使いやすい状態がベストな状態です。

0で桁数を揃えることで視認性が高くなり、多くの数値の比較がしやすくなります。

0埋めするためのPHPコード

実際に機能するPHPコードは以下です。

$number = 7;

str_pad($number, 2, "0", STR_PAD_LEFT); // 結果: "07"
str_pad($number, 3, "0", STR_PAD_LEFT); // 結果: "007"

sprintf("%02d", $number); // 結果: "07"
sprintf("%03d", $number); // 結果: "007"

上記のコードではどちらも0埋めを実現するための方法になります。

str_padの使用方法

(PHP 4 >= 4.0.1, PHP 5, PHP 7, PHP 8)

str_pad — 文字列を固定長の他の文字列で埋める

https://www.php.net/manual/ja/function.str-pad.php

str_padは、文字列を指定した長さになるように指定の文字で埋めるためのPHPの組み込み関数です。

主にテキストや数字の整形を行うために使用されます。以下は、str_pad関数の基本的な使い方とパラメータの説明です。

str_pad(
    string $string,
    int $length,
    string $pad_string = " ",
    int $pad_type = STR_PAD_RIGHT
): string
  1. $string: 基本となる文字列
  2. $length: 希望する結果の長さ。$stringの長さがこれに満たない場合、埋める処理が行われます。
  3. $pad_string: 埋める際に使用する文字列。通常は空白やゼロなどが使われます。
  4. $pad_type: 埋める位置の指定。指定できる値は以下が存在します。
    • STR_PAD_RIGHT(右側に埋める)
    • STR_PAD_LEFT(左側に埋める)
    • STR_PAD_BOTH(両側に均等に埋める)

sprintfの使用方法

(PHP 4, PHP 5, PHP 7, PHP 8)

sprintf — フォーマットされた文字列を返す

https://www.php.net/manual/ja/function.sprintf.php

sprintfは、フォーマット指定を使用して文字列を整形するためのPHPの組み込み関数です。指定されたフォーマットに従って、変数を埋め込むことができます。

主にテキストや数字の整形、日付や時刻のフォーマットなどに使用されます。以下は、sprintf関数の基本的な使い方とフォーマット指定子の説明です。

sprintf(string $format, mixed ...$values): string
  1. $format: フォーマット文字列。埋め込みたい変数や指示子を含む形式です。
  2. $values: フォーマット文字列内の指示子に対応する変数や値。複数の引数を取ることができます。

指定できる指示子の代表的な例としては以下が存在します。

  • %s: 文字列
  • %d or %i: 符号付き整数
$name = "花子";
$age = 25;

sprintf("名前: %s、 年齢: %d", $name, $age); // "名前: 花子、 年齢: 25"

他にも識別子が存在するので、詳しくは公式ドキュメントを参照してください。

str_padとsprintfの違いを比較

どちらもゼロ埋めを実現できますが、得意な場面が異なります。代表的な違いを表にまとめました。

比較項目str_padsprintf
主な用途文字列を固定長に埋める(0埋め専用に近い)フォーマット全体を整形する(0埋めは一部)
0埋めの書き方str_pad($n, 3, '0', STR_PAD_LEFT)sprintf('%03d', $n)
埋める位置左・右・両側を指定可能基本は左(先頭)
複数値の同時整形1値ずつ処理1回で複数値をまとめて整形可能
可読性引数の意味が分かりやすいフォーマット指定子に慣れが必要
向いている場面単純にゼロ埋めしたいとき日付・連番など決まった書式で出力するとき

「とにかく0で埋めたい」なら str_pad、「決まった書式でまとめて整形したい」なら sprintf が扱いやすい、と覚えておくとよいでしょう。

ゼロ埋めの利用例(桁揃え・日付・連番)

実際によく使う場面を、コードとあわせて紹介します。

日付・時刻を2桁でゼロ埋めする

$hour = 9;
$min  = 5;

// 09:05 のように時刻を整形
echo sprintf('%02d:%02d', $hour, $min); // 09:05

// 年月日を YYYY-MM-DD の形式に揃える
$y = 2026; $m = 7; $d = 5;
echo sprintf('%04d-%02d-%02d', $y, $m, $d); // 2026-07-05

連番のファイル名やIDを桁揃えする

$id = 42;

// 4桁のIDに0埋め
echo str_pad($id, 4, '0', STR_PAD_LEFT); // 0042

// 連番ファイル名を組み立てる
echo sprintf('IMG_%04d.jpg', $id); // IMG_0042.jpg

このように桁数を揃えておくと、ファイル名や識別子を並べたときに順序が崩れにくく、見た目もそろって扱いやすくなります。

終わりに

以上、PHPコードで0埋めをする2種類の方法を紹介しました。

str_pad は0埋めする事だけに特化した関数で引数に指定するだけで実現することができます。

sprintf は0埋め以外にも文字列の表示内容などを整形する事ができるので汎用的な処理の記述が可能になります。

どちらでも実現できるので、ご自分のプロジェクトの特性にあった物を判断し、使用する事をお勧めします。

お疲れ様でした。

ホーム » 記事一覧 » 技術メモ » 開発 » PHP開発 » PHPのゼロ埋め(0埋め)|str_padとsprintfの使い方と違い

投稿者

ここまで読んでいただき、ありがとうございます。

このサイトでは、私自身が関わっていることや、興味を持って試していることをそのまま置いています。

内容を見ていて、
「少し話を聞いてみたい」
「協業できる部分がありそう」
と感じる点があれば、下記のお問い合わせフォームからご連絡ください。状況を確認したうえで、必要な範囲でお返事します。

特に、以下のWordPressサイトに関する相談にも対応しているのでご興味ありましたらご相談ください。


Comments

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です