PHPで0埋めする7つの方法!シンプルで効果的なコード集

PHPで0埋めする方法を解説する記事の表紙画像PHP
この記事は約7分で読めます。

 

【サイト内のコードはご自由に個人利用・商用利用いただけます】

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

基本的な知識があればカスタムコードを使って機能追加、目的を達成できるように作ってあります。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を凌駕する現役のプログラマチームによって監修されています。

サイト内のコードを共有する場合は、参照元として引用して下さいますと幸いです

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

いつもPHPでプログラミングをしていると、時々数値や文字列を特定の桁数になるように左側から0で埋めたいという状況に遭遇しますよね。

そんなときに役立つ、PHPで0埋めをするための7つの具体的なコードを本記事では紹介します。

これらのコードを理解し、実際のプログラミングに生かせば、よりスムーズで効率的なコーディングが可能になります。

●PHPで0埋めとは?

“0埋め”とは、指定した桁数になるまで数値や文字列の左側を0で補うことを指します。

例えば、数値の5を3桁にするために0埋めを行うと、「005」のようになります。

これは、ファイル名やIDの生成、レポートの出力など、さまざまなシーンで利用されます。

●基本的な0埋めの方法

ここでは、最も基本的な0埋めの方法を2つ、sprintf関数とstr_pad関数を使用する方法について見ていきましょう。

○サンプルコード1:sprintf関数を使用する方法

sprintf関数を使うと、指定したフォーマットに従って文字列を作成できます。

ここでは、3桁の数値を生成するコードを紹介します。

<?php
$num = 5;
echo sprintf("%03d", $num);
?>

この例では、sprintf関数の第一引数に"%03d"というフォーマットを指定しています。

これは、3桁の10進数整数を表し、桁数が足りない場合は0で埋めるという意味です。

よって、出力結果は「005」になります。

○サンプルコード2:str_pad関数を使用する方法

str_pad関数は、指定した長さになるまで文字列を特定の文字で埋めることができます。

ここでは、3桁の数値を生成するコードを紹介します。

<?php
$num = 5;
echo str_pad($num, 3, "0", STR_PAD_LEFT);
?>

このコードでは、str_pad関数の第二引数に3を、第三引数に”0″を、第四引数にSTR_PAD_LEFTを指定しています。

これにより、「005」という3桁の数値を生成できます。

●応用的な0埋めの方法

次に、より応用的な0埋めの方法をいくつか見ていきましょう。

○サンプルコード3:配列の要素を0で埋める方法

配列の各要素を0で埋めるためには、配列の要素を一つずつ取り出して0埋めを行い、それを新しい配列に格納することで実現できます。

<?php
$array = array(5, 10, 15);
$new_array = array();

foreach ($array as $value) {
    $new_array[] = str_pad($value, 3, "0", STR_PAD_LEFT);
}

print_r($new_array);
?>

このコードでは、foreach文を使って配列$arrayの要素を一つずつ取り出し、それをstr_pad関数を用いて0埋めしています。

そして、その結果を新しい配列$new_arrayに追加しています。

実行結果として、「005」「010」「015」という3桁の数値が格納された新しい配列が生成されます。

○サンプルコード4:複数の変数を0で埋める方法

次に、複数の変数を0で埋める方法について見ていきます。

このためには、それぞれの変数に対して0埋めを行うコードを記述する必要があります。

<?php
$num1 = 5;
$num2 = 50;

$num1_padded = sprintf("%03d", $num1);
$num2_padded = sprintf("%03d", $num2);

echo $num1_padded . "\n";
echo $num2_padded . "\n";
?>

このコードでは、$num1$num2という2つの変数に対してsprintf関数を用いて0埋めを行っています。

その結果、「005」と「050」という2つの3桁の数値が生成されます。

○サンプルコード5:動的な桁数で0を埋める方法

0埋めする桁数を動的に変更することも可能です。

たとえば、ユーザからの入力値や計算結果など、実行時に桁数が決まる場合に便利です。

<?php
$num = 5;
$pad_length = 4;

echo str_pad($num, $pad_length, "0", STR_PAD_LEFT);
?>

このコードでは、0埋めする桁数を$pad_lengthという変数に格納しています。

その変数をstr_pad関数の第二引数に指定することで、動的に桁数を変更できます。

この例では、「0005」という4桁の数値が生成されます。

○サンプルコード6:0以外の文字で埋める方法

0埋めではなく、別の文字で埋めることも可能です。

これは、たとえば特定の文字でデータをパディングする場合などに利用できます。

<?php
$num = 5;
echo str_pad($num, 3, "*", STR_PAD_LEFT);
?>

このコードでは、str_pad関数の第三引数に””を指定しています。

その結果、「*5」という形式でデータがパディングされます。

○サンプルコード7:マルチバイト文字列を0で埋める方法

最後に、マルチバイト文字列を0埋めする方法について見ていきましょう。

これは、文字数ではなくバイト数に基づいてパディングを行う場合に便利です。

<?php
$str = "あ";
echo str_pad($str, 3, "0", STR_PAD_LEFT);
?>

このコードでは、マルチバイト文字列”あ”を0埋めしています。

その結果、「00あ」という形式でデータがパディングされます。

ただし、この方法ではバイト数に基づいてパディングが行われるため、マルチバイト文字の扱いには注意が必要です。

たとえば、UTF-8では日本語1文字は3バイトとなるため、このコードの結果は「00あ」となります。

●注意点と対処法

PHPで0埋めを行う際には、いくつかの注意点が存在します。

それらを把握し、適切な対処法を知ることで、予期しない結果を避け、より安全なコードを書くことができます。

まず、str_pad関数はマルチバイト文字に対応していません。

そのため、UTF-8などのマルチバイト文字を含む文字列をパディングしようとすると、期待した結果が得られない場合があります。

これは、str_pad関数が文字数ではなく、バイト数に基づいてパディングを行うからです。

この問題を避けるためには、mb_strlen関数を使ってマルチバイト文字列の長さを取得し、それに基づいてパディングを行うと良いでしょう。

次に、0埋めを行うための桁数を指定する際にも注意が必要です。

指定した桁数が元の数値や文字列の長さよりも小さい場合、str_pad関数やsprintf関数は元の数値や文字列をそのまま返します。

つまり、桁数を小さく設定しても、元の数値や文字列が切り捨てられることはありません。

これは予期しない結果を防ぐための重要な性質です。

また、sprintf関数を使用する場合、フォーマット文字列には注意が必要です。

フォーマット文字列に誤りがあると、予期しない結果が返される可能性があります。

具体的には、%03dのように0と桁数を指定し、それに続いてd(整数)を指定することで、数値を0埋めすることができます。

しかし、dの代わりにf(浮動小数点数)やs(文字列)を誤って指定してしまうと、意図しない結果が得られる可能性があります。

まとめ

PHPで0埋めを行う方法について、7つの具体的なコード例と共に解説しました。

これらの方法を理解し、適切に使用することで、数値や文字列のフォーマットに関する様々な要求に対応できるようになります。

ただし、マルチバイト文字の扱いや桁数の指定、sprintf関数のフォーマット文字列の使用など、注意点も多いことを覚えておいてください。

それぞれのケースに適した方法を選ぶことで、効果的に0埋めを行うことができます。

また、この記事では主に数値や文字列を0で埋める方法を取り上げましたが、同様の手法を使って他の文字でパディングを行うことも可能です。

自身のコーディングスタイルやプロジェクトの要件に合わせて、最適な方法を選択しましょう。