Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【PHP8.x】STR_PAD_LEFT定数の使い方

STR_PAD_LEFT定数の使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

STR_PAD_LEFT定数は、PHPの文字列操作関数であるstr_pad()関数において、文字列のパディング(埋め合わせ)方向を指定するために使用される定数です。この定数をstr_pad()関数の引数に指定することで、元の文字列を指定された長さになるまで、左側から特定の文字で埋める動作を指示できます。

具体的には、数値データの表示を揃えたり、特定のフォーマットに整形したりする際に非常に役立ちます。例えば、請求書番号や商品コードのように、常に同じ桁数で表示したい場合、元の文字列が短いときに、この定数を使って左側にゼロやスペースなどの埋め文字を追加し、必要な桁数に揃えることができます。

この定数は、主にstr_pad($input, $pad_length, $pad_string, STR_PAD_LEFT)のように利用され、$input文字列の左側が$pad_stringで埋められ、全体の長さが$pad_lengthになります。これにより、出力される文字列の見た目を整え、読みやすさを向上させることが可能です。データの出力整形や画面表示の調整など、多様な場面で利用される基本的な機能を提供しています。

構文(syntax)

1str_pad("Hello", 10, "-", STR_PAD_LEFT);

引数(parameters)

引数なし

引数はありません

戻り値(return)

int

STR_PAD_LEFTは、文字列を指定した長さにパディングする際に、左側を埋めることを示す整数定数です。

サンプルコード

PHPで文字列を左ゼロ埋めする

1<?php
2
3/**
4 * STR_PAD_LEFT 定数を使用して、文字列の左側を '0' で埋めるサンプル関数です。
5 *
6 * この関数は、入力された値(数値または文字列)を指定された長さに揃えるために、
7 * 左側を '0' で埋める処理を行います。
8 * 例えば、日付の月日やID番号などを特定の桁数に揃えたい場合に役立ちます。
9 *
10 * @param string|int $value パディングする元の値。
11 * @param int $length 目標とする文字列の長さ。
12 * @return string パディングされた文字列。
13 */
14function padWithLeadingZeros(string|int $value, int $length): string
15{
16    // str_pad() 関数は文字列を扱うため、元の値を文字列に変換します。
17    $stringValue = (string) $value;
18
19    // str_pad() 関数を使用して、文字列の左側を '0' で埋めます。
20    // STR_PAD_LEFT 定数は、埋め込みを文字列の左側で行うことを指示します。
21    // 引数: str_pad(元の文字列, 目標の長さ, 埋め文字, 埋め込みタイプ)
22    return str_pad($stringValue, $length, '0', STR_PAD_LEFT);
23}
24
25// サンプル使用例:
26// 数値 123 を5桁に揃える場合(左側に '0' を埋める)
27echo "元の値: 123, パディング後: " . padWithLeadingZeros(123, 5) . PHP_EOL;
28
29// 数値 42 を4桁に揃える場合
30echo "元の値: 42, パディング後: " . padWithLeadingZeros(42, 4) . PHP_EOL;
31
32// 文字列 "abc" を6桁に揃える場合
33echo "元の値: abc, パディング後: " . padWithLeadingZeros("abc", 6) . PHP_EOL;
34
35// 既に目標の長さ以上の文字列の場合、変更されない
36echo "元の値: 1234567, パディング後: " . padWithLeadingZeros(1234567, 5) . PHP_EOL;
37
38?>

このPHPサンプルコードは、数値や文字列の左側を「0」で埋めて、指定された桁数に揃える方法を示しています。特に、日付の月日やID番号などを一定の桁数に統一したい場合に役立つ機能です。

コードの中心となるのは、PHP標準のstr_pad()関数と、それに渡す定数STR_PAD_LEFTです。str_pad()関数は、与えられた文字列を指定の長さになるまで、特定の文字で埋めるために使用されます。この関数は、第一引数にパディングしたい文字列、第二引数に目標とする文字列の長さ、第三引数に埋める文字を指定します。そして、第四引数にはどこを埋めるかを指示する定数を渡します。

ここで使われているSTR_PAD_LEFT定数は、str_pad()関数に「文字列の左側(先頭)を埋めてください」と明確に指示するためのものです。この定数はPHPの内部で定義されており、整数値を返します。サンプルコード内のpadWithLeadingZeros関数では、まず入力された$valueを文字列に変換し、その後str_pad()関数にSTR_PAD_LEFTを指定して呼び出すことで、左側を「0」で埋めた文字列を生成しています。

padWithLeadingZeros関数の$value引数には、数値を渡しても文字列を渡しても問題ありません。$length引数には、最終的に何桁にしたいかを指定します。この関数は処理後、指定された長さに「0」で左側が埋められた新しい文字列を戻り値として返します。例えば、数値の123を5桁に揃えたい場合、「00123」という結果が得られます。元の文字列が既に目標の長さ以上の場合は、パディングは行われず、元の文字列がそのまま返されます。

このサンプルコードにおけるSTR_PAD_LEFTは、PHPに組み込まれた特別な「定数」であり、str_pad関数に文字列の左側を埋めるよう指示する役割を持ちます。これは自分で値を変更する変数ではありません。

str_pad関数は文字列を操作するため、数値(例: 123)を渡した場合でも、内部で自動的に文字列に変換されて処理されます。意図せず異なる挙動となることを避けるため、関数内で(string) $valueのように明示的に文字列へ型変換している点は、安全なコーディングの良い例です。

また、str_pad関数は、元の文字列が指定した目標の長さよりも短い場合にのみ、左側を埋めてくれます。もし元の文字列が既に目標の長さ以上であれば、切り捨てられることなく、そのままの文字列が返されます。この挙動を理解しておくことが重要です。埋め文字はサンプルでは「0」ですが、必要に応じて他の文字を指定することも可能です。

PHPで数値を左ゼロ埋めする

1<?php
2
3/**
4 * 指定された数値を左側にゼロ埋めして指定の桁数にする関数。
5 *
6 * str_pad 関数と STR_PAD_LEFT 定数を使用して、数値を文字列として扱い、
7 * 左側をゼロで埋めて指定された長さにします。
8 *
9 * @param int $number ゼロ埋めしたい数値
10 * @param int $length 最終的な文字列の桁数
11 * @return string 左側をゼロ埋めされた文字列
12 */
13function padNumberWithLeadingZeros(int $number, int $length): string
14{
15    // str_pad 関数を使用して文字列をパディングします。
16    // 第1引数: パディングする文字列(数値を文字列に変換)
17    // 第2引数: 結果の文字列の合計長
18    // 第3引数: パディングに使用する文字列 ('0' でゼロ埋め)
19    // 第4引数: パディングの方向 (STR_PAD_LEFT で左側をパディング)
20    return str_pad((string)$number, $length, '0', STR_PAD_LEFT);
21}
22
23// サンプルコードの使用例
24
25// 5 を 5桁で左側をゼロ埋め
26$paddedNumber1 = padNumberWithLeadingZeros(5, 5);
27echo "5を5桁でゼロ埋め: " . $paddedNumber1 . PHP_EOL; // 出力: 00005
28
29// 123 を 7桁で左側をゼロ埋め
30$paddedNumber2 = padNumberWithLeadingZeros(123, 7);
31echo "123を7桁でゼロ埋め: " . $paddedNumber2 . PHP_EOL; // 出力: 0000123
32
33// 12345 を 3桁で左側をゼロ埋め (元の桁数より短い場合は切り詰めずそのまま返される)
34$paddedNumber3 = padNumberWithLeadingZeros(12345, 3);
35echo "12345を3桁でゼロ埋め: " . $paddedNumber3 . PHP_EOL; // 出力: 12345
36
37?>

PHPのSTR_PAD_LEFTは、文字列の左側を任意の文字で埋めて指定の長さに整形する際に使用する定数です。この定数は、主にstr_pad関数と組み合わせて使われ、文字列のパディング(埋め合わせ)方向を左に指定する役割があります。

サンプルコードのpadNumberWithLeadingZeros関数は、STR_PAD_LEFT定数とstr_pad関数を活用し、数値を左側からゼロで埋めて指定桁数の文字列に変換するものです。引数$numberにはゼロ埋めしたい数値、$lengthには最終的な文字列の桁数を指定します。この関数は、左側をゼロで埋められた結果の文字列を戻り値として返します。

具体的な例として、padNumberWithLeadingZeros(5, 5)と呼び出すと、数値5"00005"という5桁の文字列になります。同様にpadNumberWithLeadingZeros(123, 7)"0000123"を生成します。もし$lengthが元の数値の桁数より短い場合、str_pad関数は文字列を切り詰めずに元の文字列をそのまま返します。例えばpadNumberWithLeadingZeros(12345, 3)の結果は"12345"となります。STR_PAD_LEFTは、システムで扱うIDやコード、日付の書式など、固定長の文字列表現が必要な場面で幅広く活用されます。

このサンプルコードで数値をゼロ埋めする際に、いくつか注意点があります。str_pad関数は、数値を直接パディングするのではなく、必ず(string)$numberのように文字列に型変換してから渡す必要があります。また、STR_PAD_LEFTは「左側からパディングする」という方向を指定する定数であり、実際にゼロ埋めを行うのは3番目の引数で指定されているパディング文字 '0' です。指定した桁数よりも元の数値の桁数が多い場合、文字列は切り詰められずにそのまま返されることにご注意ください。関数の戻り値は常に文字列型ですので、後続の処理で数値として扱いたい場合は、必要に応じて再度数値型に変換してください。

関連コンテンツ