Hatena::ブログ(Diary)

ゆっくり*ゆっくり

2008-09-17

[]switch文の仕様 15:33

<?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 ?>って長いな。

通りすがり通りすがり 2011/02/16 17:39 これって、他のステートメントでは起こらないですよね。
明確なバグのような気がしますが、仕様と言うにはちょっとね・・・。