如果在开关和第一个case语句之间打开和关闭PHP标记,为什么会出错


Why Error if open and close PHP tags between switch and first case statement?

作品:

    <?php switch ($student[$use_grade]) {
        case "K": ?>
            <?php echo 'works'; ?>
        <?php break; ?>
    <?php } ?>

不起作用:

    <?php switch ($student[$use_grade]) { ?>
        <?php case "K": ?>
            <?php echo 'works'; ?>
        <?php break; ?>
    <?php } ?>

分析错误:语法错误,意外的T_INLINE_HTML,应为T_CASE或T_DEFAULT或"}">

来自PHP的注释文档:

在switch语句的情况下,可以理解如下;在里面任何可以有echo语句的地方(if块、switch的情况,不管怎样(,这就是您可以获得原始HTML的地方。在里面PHP基本上就是这样处理的——就像一个echo陈述

不过,在切换和案例之间,你不能回声任何东西。通过将开关和案例放在两个独立的PHP块中原始HTML换行符介于两者之间,PHP基本上不得不尝试找到该语句的位置。但它不可能在那里,因此困难

http://www.php.net/manual/en/control-structures.alternative-syntax.php

内联html(?><?php之间的所有内容(在语法上与运算符相同,并且在switch和第一个case之间不允许使用运算符。

来自PHP文档:

switch语句和第一种情况将导致语法错误。