2009年9月3日木曜日

PHP::sprintf 引数の番号付

前から使ってみたくても動かなかったのが
PHPのsprintf関数の引数の番号付

という機能。

PHPのマニュアルに書いてあるのだけど、
どうも動かなかった。

動かないなぁ、変だけど、まぁいいや、
と使わないでいたが、原因が分かった。
教えてくれたのは、このページ



要は、ダブルとシングルクオートの問題だった。
簡単に、下に3通りの例を(例題もほぼ上のページと同じ)

$format = "これは動く:%2\$s %3\$02d %1\$04d";
printf($format, $year, $month, $day);

$format = 'これも動く:%2$s %3$02d %1$04d';
printf($format, $year, $month, $day);

$format = "これは動かない:%2$s %3$02d %1$04d";
printf($format, $year, $month, $day);

なるほど、分かってみれば簡単なことだった。
「$」がPHPの変数と認識されちゃうことが原因だったわけですね。

0 件のコメント: