Because HEREDOC acts like a double-quoted string, PHP is attempting to interpolate the $s
as a variable. Try NOWDOC instead
$i = <<<'EOD'
This is your invoice for %1$s %1$s %1$s %1$s
EOD;
문제
I'm trying to use sprintf on a heredoc this way. It wont work. Any idea how to solve this?
$i = <<<EOD
This is your invoice for %1$s %1$s %1$s %1$s
EOD;
$year = '2013';
$i = sprintf($i,$year);
echo $i;
Notice: Undefined variable: s in
해결책
Because HEREDOC acts like a double-quoted string, PHP is attempting to interpolate the $s
as a variable. Try NOWDOC instead
$i = <<<'EOD'
This is your invoice for %1$s %1$s %1$s %1$s
EOD;
다른 팁
Or just escape the dollar signs:
$i = <<<EOD
This is your invoice for %1\$s %1\$s %1\$s %1\$s
EOD;
This is useful e.g. in PHP 5.2 where there's no nowdoc syntax.