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