[php] printf sprintf vprintf vsprintf の違いについて(その2)

PHPでフォーマットした文字列の出力をおこなう際に使用する関数、
printf sprintf vprintf vsprintf の使い分けについて記載します。

今回は「sprintf」および「vsprintf」の使用方法を紹介します。
「printf」「sprintf」の使用方法は前回の記事をご参照ください。

sprintfの使用方法の例:

sprintfはprintfによく似ていますが、
printf はフォーマット済みの文字列を出力するのに対して、
sprintf はフォーマットされた文字列を返します。

sprintf単体では出力しませんので、以下のサンプルでは
sprintfから受け取った文字列をechoで出力をおこなっています。

$format = "名前は、%sで、年齢は%dです。<br/>";
$hoge1 = sprintf($format,  "山田太郎",  30);
$hoge2 = sprintf($format,  "大阪花子",  20);
echo $hoge1;
echo $hoge2;

上記の出力結果:
名前は、山田太郎で、年齢は30です。
名前は、大阪花子で、年齢は20です。

また引数で受け取った値をフォーマット出力する文字列内に複数使用する場合、
引数の番号を指定して複数回使い回すことも可能です。

その場合は以下のように記述します。

$age = 50;
$name = '山田';
$format = '名前は %2$s です。年齢は %1$d です。<br />
           年齢は %1$dの %2$s です。';
echo sprintf($format, $age, $name);

上記の出力結果:
名前は 山田 です。年齢は 50 です。
年齢は 50の 山田 です。

vsprintfの使用方法の例:

vsprintf は、sprintf と動作は同じですが、
可変長の引数ではなく配列が引数になります。

以下のように使用します。

$array1 = array("山田太郎", 30);
$array2 = array("大阪花子", 20);
$format = "名前は、%sで、年齢は%dです。<br/>";
$hoge1 = vsprintf($format,  $array1);
$hoge2 = vsprintf($format,  $array2);
echo $hoge1;
echo $hoge2;

上記の出力結果:
名前は、山田太郎で、年齢は30です。
名前は、大阪花子で、年齢は20です。

こちらもvsprintfで受け取った配列の引数を複数回使用する場合、
引数の番号を指定して使い回すことも可能です。

$array1 = array(30,"山田太郎");
$array2 = array(20,"大阪花子");
$format = '名前は %2$s です。年齢は %1$d です。<br />
           年齢は %1$dの %2$s です。<br />';
$hoge1 = vsprintf($format,  $array1);
$hoge2 = vsprintf($format,  $array2);
echo $hoge1;
echo $hoge2;

上記の実行結果:

名前は 山田太郎 です。年齢は 30 です。
年齢は 30の 山田太郎 です。
名前は 大阪花子 です。年齢は 20 です。
年齢は 20の 大阪花子 です。

木曜日担当:nishida



アプリ関連ニュース

お問い合わせはこちら

お問い合わせ・ご相談はお電話、またはお問い合わせフォームよりお受け付けいたしております。

tel. 06-6454-8833(平日 10:00~17:00)

お問い合わせフォーム