sprintf多次使用相同的值

时间:2013-11-28 08:41:26

标签: php

我在使用sprintf时尝试在不同的地方使用相同的值,但是失败了。

<?php

$score = 50;
$percent = 10;

$str = "Hello: You scored %s (%s%%). Your score is %2$s %%"; //Problem is here %2$s

echo sprintf($str,$score,$percent);
?>

我收到此错误:Notice: Undefined variable: s in C:\web\apache\htdocs\sprintf.php on line 6 Warning: sprintf(): Too few arguments in C:\web\apache\htdocs\sprintf.php on line 8

2 个答案:

答案 0 :(得分:7)

使用单引号而不是双引号:

$str = 'Hello: You scored %s (%s%%). Your score is %2$s %%';

变量在双引号内展开,因此$s被视为变量,而非格式选项。

如果你想使用双引号,你可以逃避美元符号:

$str = "Hello: You scored %s (%s%%). Your score is %2\$s %%";

答案 1 :(得分:1)

双引号字符串中的$用于变量插值,PHP在此处查找变量$s。使用单引号字符串并在您使用时为所有参数编号:

'Hello: You scored %1$s (%1$s%%). Your score is %2$s %%'