HOME   入り口   MENU


No18.ええ?!整形!? ---- printf,sprintf関数




数値、文字列など「こんなフォーマットで表示したいな」って
ときがあります。
私が良く使うのは数値の整形。
小数点以下X桁まで表示したいなぁってこと多いです。
例えば123456.78901という数値。
printf(フォーマット,整形したい変数または値);


<?php
$data=123456.78901;
printf("%.2f<BR>\n",$data);
printf("%.4f<BR>\n",$data);
printf("%.6f<BR>\n",$data);
?>

実行すると表示する値は

123456.79
123456.7890
123456.789010


となり、数値の小数点以下の値を指定することができます。
最初にある%
「その後に続く文字のフォーマットに従って整形しますよ」
という意味なのです。(^_^)
その後のドット(.)xfは小数点以下何桁に整形するかという意味です。
ここで忘れてはいけないのはf!
このfは整形元を小数点できる数値だとみなしてくれる役目があるので忘れずに!

それから日付のフォーマットにもよく使ってます。
もちろんdate("Y-m-d",日付変数等);でもいいですが、
年、月、日をそれぞれ単体で分かっていて、でも0パディングされていない場合。

「0パディング?!なんだそりゃ?」

えーと、確かに、分かりにくいですね。(笑)
2003年1月4日などを2003年01月04日と0で埋めたい場合です。(^_^)

<?php
printf("%04d年%02d月%02d日", 2003, 1, 4);
?>

2003年01月04日

とこんなに簡単に0パディングして整形されます。

実はコレを知る前は
echo substr("0000" ."990",-4) ."年".substr("00" ."6",-2) ."月".substr("00" ."5",-2) ."日";
などとやってて書くのがヤになっちゃってました(笑)。

文字列の整形も便利です。
<?php
printf("私の名前は%sです。猫の%sは私の家族です。", "まさご","竜");
?>

私の名前はまさごです。猫の竜は私の家族です。
とこんな風にできるのです。

ところでタイトルにあるsprintfはなんでしょう。
どちらも使い方は同じです。
違いは
printf 整形したものを出力
sprintf 整形した文字列を戻す


出力しないでプログラム中で文字列として使うときsprintfを使っています。
使い分けると便利です。(^_^)

整形はこれ以外にももっと高度なことができます。
詳しくはPHP日本語マニュアルへ



サンプル: こう書くと   ==>    こうなる!




(オマケ)
printf,sprintf以外にも
vprintf,vsprintfというのもあります。
vを頭につけると配列を引数にとります。

$ardata=array("まさご","竜");
vprintf("私の名前は%sです。猫の%sは私の家族です。", $ardata);

とこんな感じ。(^_^)











  HOME