概要
閲覧数:1043
投稿日:2014-06-08
更新日:2014-06-08
引数(複数)に指定したデータを、予め指定した文字形式(フォーマット)へ変換
・パターンの中の「%」 … データの始まり
・「03」 … 桁数が3桁に足りない場合、左側を0で埋める
・「d」 … データを整数として扱う
・引数順番指定のやり方 … 何番目の引数を持ってくるのかを、%の後に明記し、「\$」を付与
・printf() … フォーマットした文字を出力
・sprintf() … フォーマットのみ。文字出力は行わない
コード
//値が複数ある場合の処理 $year = 2004; $month = 5; $day = 4; //printfで整形表示 printf("今日は%04d年%02d月%02d日です。", $year, $month, $day); //今日は2004年05月04日です。整形表示なのでechoではなくprintf。4桁2桁2桁、足りなければ0で埋める echo "\n\n"; //sprintfで整形後、print_rで表示 print_r(sprintf("今日は%04d年%02d月%02d日です。", $year, $month, $day ));//今日は2004年05月04日です。 echo "\n\n"; //引数の番号付け(PHP4.0.6以降対応) $year = 2004; $month = 5; $day = 15; //値が複数 → 引数が表示順通りに並んでいる例 $format = "日本語では%04d年%02d月%02d日"; print_r(sprintf($format, $year, $month, $day)."\n\n");//日本語では2004年05月15日 //値が複数 → 引数が表示順通りに並んでいない例 $format = "%02d日 %02d月 %04d年"; printf($format, $year, $month, $day);//2004日 05月 0015年 echo "\n\n"; // 引数に番号をつけて順番を指定。具体的には、%の後に何番目の引数と交換するかを指定 // 「%引数番号」の後に「$」を付けて実際のフォーマットを指定 //「"」ダブルクォーテーション文字列なので「$」をエスケープ //つまり、%1\$○○、%2\$△△、%3\$×× $format = "%3\$02d日 %02d月 %1\$04d年";//引数に番号をつけて順番を指定する場合は、すべての要素に対して行なわなければ望む結果を得られない。第2引数だけ、していなかったため、望む結果を得られなかった例 printf($format, $year, $month, $day); //15日 2004月 2004年 echo "\n\n"; //%3\$××、%2\$△△、%1\$○○、 $format = "%3\$02d日 %2\$02d月 %1\$04d年"; printf($format, $year, $month, $day); //15日 05月 2004年 echo "\n\n"; $month = "May"; // 月$monthの定義し直し $format = "英語なら・・・・%2\$s %3\$02d %1\$04d";//何番目の引数を持ってくるのかを%の後に明記。「\$」を付与するだけ printf($format, $year, $month, $day); //英語なら・・・・May 15 2004
結果
今日は2004年05月04日です。 今日は2004年05月04日です。 日本語では2004年05月15日 2004日 05月 0015年 15日 2004月 2004年 15日 05月 2004年 英語なら・・・・May 15 2004