Webmonkey の PHP と MySql のチュートリアル、レッスン 2を見ています。phpリテラルだと思います。とは%s
どういう意味ですか? これprint_f()
は、少なくとも最初の 2 つのコード ブロックの while ループ内の関数内にあります。
printf("<tr><td>%s %s</td><td>%s</td></tr>n", ...
Webmonkey の PHP と MySql のチュートリアル、レッスン 2を見ています。phpリテラルだと思います。とは%s
どういう意味ですか? これprint_f()
は、少なくとも最初の 2 つのコード ブロックの while ループ内の関数内にあります。
printf("<tr><td>%s %s</td><td>%s</td></tr>n", ...
% 記号の前にある printf または sprintf 文字は、プレースホルダー (またはトークン) です。これらは、引数として渡される変数に置き換えられます。
例:
$str1 = 'best';
$str2 = 'world';
$say = sprintf('Tivie is the %s in the %s!', $str1, $str2);
echo $say;
これは出力されます:
Tivieは世界一!
注: その他のプレースホルダーがあります (文字列の %s、10 進数の %d など...)
注文:
引数を渡す順序が重要です。$str1 を $str2 に切り替えると、
$say = sprintf('Tivie is the %s in the %s!', $str2, $str1);
それは印刷されます
「Tivieは最高の世界です!」
ただし、次のように引数の読み取り順序を変更できます。
$say = sprintf('Tivie is the %2$s in the %1$s!', $str2, $str1);
これにより、文が正しく印刷されます。
また、PHP は動的言語であり、明示的な型定義を必要としない (またはサポートしない) ことに注意してください。つまり、必要に応じて変数の型を調整します。スプリントでは、数値プレースホルダー (%d) の引数として「文字列」を渡すと、その文字列が数値 (int、float...) に変換され、奇妙な結果になる可能性があることを意味します。次に例を示します。
$onevar = 2;
$anothervar = 'pocket';
$say = sprintf('I have %d chocolate(s) in my %d.', $onevar, $anothervar);
echo $say;
これは印刷されます
私の 0 にはチョコレートが 2 個あります。
PHPdocsでさらに読む
ではprintf
、%s
文字列に挿入されるデータのプレースホルダーです。への追加の引数printf
は、挿入される値です。最初のプレースホルダーは最初の値を取得し、2 番目のプレースホルダーは 2 番目の値を取得するなどです。
%s
の場合に値 (文字列) に置き換えられる型指定子です%s
。
他の指定子%s
を使用できるほかに、最も一般的なものは次のとおりです。
d - 引数は整数として扱われ、(符号付き) 10 進数として表示されます。
f - 引数は float として扱われ、浮動小数点数 (ロケール対応) として表示されます。
s - 引数は文字列として扱われ、表示されます。
$num = 5;
$location = 'tree';
$format = 'There are %d monkeys in the %s';
echo sprintf($format, $num, $location);
次のように出力されます: 「木には 5 匹のサルがいます。」