何それ
と言うわけで調べました
sprintf
http://c-brains.jp/blog/wsg/09/12/07-172920.php
//sprintf(フォーマットを定義する文字列, [差し込む変数1, [差し込む変数2 ...]]);
$format = "%sだと%sが%sます。";
$aaaa = '毎日(日)曜日';
$bbbb = '僕';
$cccc = '喜び';
$message = sprintf($format, $aaaa, $bbbb, $cccc);
echo $message;
ちょっと色味が悪いけど
【出力結果】
毎日(日)曜日だと僕が喜びます。
参考URLにもありますが
$message = "{$weekday}は{$author}が{$blog}っす。";
でも良い。
個人的に下の方が書きやすいんだけど
なんか使い道あるのかな?
そして、このフォーマットを定義する文字列に挿入する変換指定子(%で始まる要素。文字列を差し込む場合は %s となります。
えーと文字列を扱う時には%sにしろってこと?
順番を指定(%の次の1、2という数字)することができる点が、この関数の便利なところです。
%d\1とかで$aaa $bbb $cccを指定できるっぽい
$format = "%1\$sが%2\$sで%4\$sが%3\$sです。";
【1 $aaa = '君';
【2 $bbb = '私';
【3 $ccc = '俺';
【4 $ddd = 'あなた';
1 2 3 4
$message = sprintf($format, $aaa, $bbb, $ccc, $ddd);
【出力結果】
1 2 4 3
君が私であなたが俺です。
ちなみに
4 3 2 1
$message2 = sprintf($format, $ddd ,$ccc ,$bbb , $aaa);
【出力結果】
あなたが俺で君が私です。
になった
てことは
sprintfの順番と%1が紐付いてるってことっすね
まあ当然なんですが。
忘れやすいのでメモ
ちなみに
さっきのを%dにすると
$format = "%dだと%dが%dます。";
0だと0が0ます。
になる。
【追加】
%d | 10進数 |
%u | 符号無し10進数 |
%o | 符号無し8進数 |
%x | 符号無し16進数 |
%X | 符号無し16進数(大文字表記) |
%e | 指数形式の浮動小数点 |
%E | %eと同じ(大文字表記) |
%f | 固定小数点形式の浮動小数点 |
%g | %eまたは%fと同じ |
%G | %eまたは%fと同じ(大文字表記) |
%b | 符号無し2進数 |
%c | 指定した文字コードに対応した文字 |
%s | 文字列 |
%p | 値のポインタ |
%n | 文字数を指定した変数に格納 |
%% | %の文字そのもの(\と同様の使い方) |
0 件のコメント :
コメントを投稿