PHP の sprintf() 関数の「引数の交換」と変換指定子の挙動
- フォーマット文字列を 2 重引用符 (") で指定した場合
%1\$d のように「\」が必要
$format = "The %2\$s contains %1\$d monkeys";
printf($format, $num, $location);
- フォーマット文字列を「引用符 (')」で指定した場合
%1$d のように「\」は不必要
$format = 'The %2$s contains %1$d monkeys';
printf($format, $num, $location);
- フォーマット文字列を「ヒアドキュメント」で指定した場合
%1\$d のように「\」が必要
$format = <<<EOD
The %2\$s contains %1\$d monkeys
EOD;
printf($format, $num, $location);
- PHP: sprintf - Manual
http://www.php.net/sprintf