37

Webmonkey の PHP と MySql のチュートリアル、レッスン 2を見ています。phpリテラルだと思います。とは%sどういう意味ですか? これprint_f()は、少なくとも最初の 2 つのコード ブロックの while ループ内の関数内にあります。

printf("<tr><td>%s %s</td><td>%s</td></tr>n", ...

4

5 に答える 5

60

% 記号の前にある 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でさらに読む

于 2012-07-24T02:29:31.083 に答える
12

ではprintf%s文字列に挿入されるデータのプレースホルダーです。への追加の引数printfは、挿入される値です。最初のプレースホルダーは最初の値を取得し、2 番目のプレースホルダーは 2 番目の値を取得するなどです。

于 2012-07-24T02:22:40.693 に答える
6

%sの場合に値 (文字列) に置き換えられる型指定子です%s

他の指定子%sを使用できるほかに、最も一般的なものは次のとおりです。

d - 引数は整数として扱われ、(符号付き) 10 進数として表示されます。

f - 引数は float として扱われ、浮動小数点数 (ロケール対応) として表示されます。

s - 引数は文字列として扱われ、表示されます。

于 2012-07-24T02:28:19.227 に答える
3
$num = 5; 
$location = 'tree';

$format = 'There are %d monkeys in the %s'; 
echo sprintf($format, $num, $location); 

次のように出力されます: 「木には 5 匹のサルがいます。」

于 2012-07-24T02:24:18.687 に答える