6

このように、ヒアドキュメントで 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 in

4

2 に答える 2

9

HEREDOC は二重引用符で囲まれた文字列のように機能するため、PHP は を$s変数として補間しようとします。代わりにNOWDOCを試してください

$i = <<<'EOD'
This is your invoice for %1$s %1$s %1$s %1$s
EOD;
于 2013-10-31T04:45:28.763 に答える
4

または、ドル記号をエスケープするだけです。

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

これは、nowdoc 構文がない PHP 5.2 などで役立ちます。

于 2014-04-01T23:29:38.857 に答える