sprintf参数交换和HEREDOC

7
我正在尝试在heredoc中使用sprintf。这种方法不起作用。有什么办法可以解决吗?
$i = <<<EOD
This is your invoice for %1$s %1$s %1$s %1$s
EOD;

$year = '2013';

$i = sprintf($i,$year);

echo $i;

注意:未定义变量$s。

你期望的结果是什么? - srain
2个回答

10

由于HEREDOC的行为类似于双引号字符串,PHP会尝试将$s解释为变量。建议使用NOWDOC代替。

$i = <<<'EOD'
This is your invoice for %1$s %1$s %1$s %1$s
EOD;

4

或者只需转义美元符号:

$i = <<<EOD
This is your invoice for %1\$s %1\$s %1\$s %1\$s
EOD;

这在 PHP 5.2 中非常有用,因为它没有现成的语法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接