2008-09-17
■[php]switch文の仕様 
<?php switch (1): ?> <?php case 1: ?> 1 <?php break ?> <?php case 2: ?> 2 <?php break ?> <?php endswitch ?>
さて、上記のようなプログラムを書いた場合、普通に考えれば1が出力されると思います。ところが結果は、
PHP Parse error: syntax error, unexpected T_INLINE_HTML, expecting T_ENDSWITCH or T_CASE or T_DEFAULT
このようにエラーになります。原因はswitchとcaseの間にスペースがあることらしいのですが、どういうことかというと・・・
Actually this is not bug. You can't have anything between
switch()..case.. ever. It's not valid.
PHP :: Doc Bug #25667 :: Strange switch-case behaviour
いわく、switchとcaseの間にecho " ";してるのと一緒で、バグではないとのことです。ということでテンプレートとかでswitchを使うときは気をつけましょう。
やっぱり<?php xxx ?>って長いな。

明確なバグのような気がしますが、仕様と言うにはちょっとね・・・。