Yotazo Lab.

ほぼ自分用。でも誰かの役に立つかもしれない話題

PHP printfとsprintfの違い

PHPでフォーマットをしようとして調べていたら、
printfとsprintfの違いがよくわかりません・・・

printfとvprintfの違いは、
引数に配列を受け取るかどうかの違いらしい
これはわかった!

でも、マニュアルを見比べても、
やっぱりprintfとsprintfの違いがよくわかりません・・・
PHP: printf - Manual
PHP: sprintf - Manual


困ったので挙動を確かめるために、
マニュアルの解説をコメントに入れながら実際に動かしてみることにしました

echo '<p>printf フォーマット済みの文字列を出力する</p>';
printf('こんにちは%sです', '陳念');

echo '<p>sprintf フォーマットされた文字列を返す</p>';

ここまで打って気が付きました・・・!

printf フォーマット済みの文字列を出力する
sprintf フォーマットされた文字列を返す

あ~~~~!

出力するか、値を戻すかの違いか!

つまり、このような感じで、
引数に配列を取るかとらないか、出力するか値を戻すかで4種類あったんですね

引数がmixedなやつ
出力する > printf
値を戻す > sprintf


引数に配列を取るやつ
出力する > vprintf
値を戻す > vsprintf


こんな簡単なところで悩むとは・・・

というわけで、さきほどの続きは、
こういう感じになるわけですね

$greeting = sprintf('こんにちは%sです', '陳念');
echo $greeting;


詳細! PHP 7+MySQL 入門ノート

詳細! PHP 7+MySQL 入門ノート

こないだ立ち読みして、なんとなく好印象だったので買いました
勉強します