記事最終更新日:2017年09月06日
記事投稿日:2016年10月14日
閲覧数:4033 views
sprintfの使い方メモ -【PHP】
はじめに
今回のD.M.C.【デベメモドットコム】の記事は「sprintfの使い方」ということで、PHPの中でもよく使用することの多い関数についてメモ(解説)していきたいと思います。
はじめに「sprintf」関数を使って何が出来るのかというと、「指定した値でフォーマット」することができます。少しイメージがつきにくいかもしれませんが、基本的な使い方をこの記事では詳しく解説していけたらと思います。
数値へのフォーマット
では実際に使い方を見ていきましょう。
下記のサンプルコードをみてください。
<?php
$params = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20];
foreach ($params as $value) {
echo sprintf("%04d", $value);
echo '<br />';
}
このコードは、まず初めに「$params」という変数に「1~20」までの数値の値をもった配列を代入しています。
そしてforeach構文を使って先ほど定義した「$params」変数の配列要素の数だけループしています。今回は20個の要素を作成しましたので、20回ループします。
中身の処理自体は画面表示に必要なecho構文と改行文字の出力を行っています。
その中に今回紹介する「sprintf」関数を実行しています。
では「sprintf」関数についてですが、まず第1引数はフォーマットを指定、第2引数で「$params」の配列要素を指定していきます。
第1引数にある書式については上記コードは「%04d」のようになっていて、1文字目は「%」から始まり、2文字目にある「0」は桁数を埋めるためのパディング指定子になっていて、何の文字を使用して桁を埋めるかの指定になっています。
3文字目の「4」は表示幅の指定子になっていて、何桁にするのかということ事で、「4」と指定してあるので4桁という意味です。
4文字目の最後の「d」は型指定子になっています。「d」は10進数の整数という指定になっています。
そして実行結果が下記になっています。
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
結果を見てもらうと、先ほど指定したフォーマットに沿って桁数が揃えられている事がわかると思います。
文字列へのフォーマット
先ほど紹介した数値へのフォーマット以外にも、「sprintf」関数はもちろん文字列のフォーマットもできます。
例えば文字列の中にある一箇所だけ変更したい箇所がある際に使用する事ができるのですごく便利です。
まず下記コードにみてください。
<?php
$string = 'dev-memo.com';
echo sprintf("ようこそ%sへ!!", $string);
上記コードはなにをしているかというと、まず初めに「$string」変数に文字列を代入し、その後でecho構文で画面へ出力させています。
先ほどの「数値へのフォーマット」と使い方はほぼ同じで、「sprintf」関数の第1引数でフォーマットを指定していて、第二引数で先ほど代入した「$string」変数を指定しています。
第1引数の文字列の中に「%s」があるのがわかると思います。 1文字目は数値の際の時と同じ「%」から始まります。
そして2文字目の「s」は型指定子を指定していて「s」はstringの略で文字列の型という意味です。
実行結果は下記になっています。
ようこそdev-memo.com「デベメモドットコム」へ!!
結果を見てもらうと、フォーマットで指定した文字列の中の変更したい部分が、置換されているのがわかると思います。
初めに定義した変数「$string」変数の中身を変更するだけで出力内容が変化してくれるので、一定の書式を維持したまま色々と変更したい場合なんかに凄く便利だと思います。
複数指定のフォーマット
先ほどまでは一箇所だけ変更する方法を紹介してきましたが、「sprintf」関数は一箇所変更するだけでなく、複数変更したい場合でも問題なく使用する事が出来ます。
複数指定のコードは下記になっています。
<?php
$string01 = 'dev-memo.com';
$string02 = 'デベメモドットコム';
echo sprintf("ようこそ%s「%s」へ!!", $string01, $string02);
上記コードをみていただくと、初めに「$string01」変数と「$string02」変数を定義していて、その後にecho構文で画面へ出力させています。
いままでの違いとしては、「sprintf」関数の第1引数ではフォーマットを指定していますが、文字列の中に「%s」が二つあります。
そして今まで「sprintf」関数に渡していた引数は2つでしたが、今回は3つ引数が指定してあります。
第2引数と第3引数は先ほど定義した変数「$string01」と「$string02」ですが、実はこの引数の順番が重要になっていて、第1引数のフォーマットの「%s」の一つ目は第2引数に指定された「$string01」変数に置換され、2つ目の「%s」は第3引数の「$string02」変数の一対一の関係で置換されます。
実行結果は下記になっています。
ようこそdev-memo.com「デベメモドットコム」へ!!
複数指定の場合フォーマットの位置と引数の位置が重要なので、指定する際は注意して使用してください。
sprintf指定子一覧
「sprintf」関数の型指定子まとめ一覧
b | バイナリ数値 |
---|---|
c | ASCII値 |
d | 10進数 |
e | 科学記法 |
u | 符号無しの10進数 |
f | double浮動小数点数 |
F | float浮動小数点数 PHP 5.0.3以上 |
o | 8進数 |
s | 文字列 |
x | 16進数小文字 |
X | 16進数大文字 |
今回「sprintf」関数について解説してきましたが、もう少し詳しく知りたい方は下記のPHP公式ドキュメントを参照してください。
感想
今回紹介した「sprintf」関数はPHPだけではなく、さまざまなプログラミング言語でも、よくある関数なので使い方も似ていますし、この際に押さえておくといいと思います。
「sprintf」関数以外にもPHPには本当にたくさんの関数があって便利なんですが、沢山ありすぎて知らないものが凄く多いので当サイト(D.M.C.)では実際に使ってみて本当に使える関数なんかをこれからも発見次第、紹介していけたらと思います。
About / ブログについて
D.M.C.【デベメモドットコム】はWEB制作に関することを中心に、
その他、関連する事まで出来るだけわかりやすく備忘録としてメモを残していくブログです。
このブログを通して少しでも為になる情報を発信して皆さんと共有できればとても嬉しいです。