doudai3012 2015-02-11 15:48
浏览 261
已采纳

PHP switch语句(endswitch)为替代语法提供Parse错误

I am getting Parse error: syntax error, unexpected '', expecting endswitch (T_ENDSWITCH) or case (T_CASE) or default (T_DEFAULT) in ... with the following code

myview.phtml

<?php switch ($oEx->getCode()): ?>

<?php default: ?>
Stuff

<?php endswitch; ?>

Whereas this is OK

<?php switch ($oEx->getCode()):

endswitch; ?>

Why? A work around is to add a dummy-case as below before the closing tag but I can't see why this should be necessary.

<?php switch ($oEx->getCode()): case -9999: break; ?>

<?php default: ?>
Stuff

<?php endswitch; ?>
  • 写回答

3条回答 默认 最新

  • dsm42026 2015-02-11 15:53
    关注

    See the manual:

    Warning Any output (including whitespace) between a switch statement and the first case will result in a syntax error. For example, this is invalid:

    <?php switch ($foo): ?>
        <?php case 1: ?>
        ...
    <?php endswitch ?>
    

    Whereas this is valid, as the trailing newline after the switch statement is considered part of the closing ?> and hence nothing is output between the switch and case:

    <?php switch ($foo): ?>
    <?php case 1: ?>
        ...
    <?php endswitch ?>
    

    The issue isn't the ending PHP tag, it's the whitespace. I think if you modified your original code as below, it should get rid of your syntax error:

    <?php switch ($oEx->getCode()): ?>
    <?php default: ?>
    Stuff
    <?php endswitch; ?>
    

    Notice the only change made is removing the newline between your switch statement and the default case.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?
  • ¥15 ubuntu系统下挂载磁盘上执行./提示权限不够
  • ¥15 Arcgis相交分析无法绘制一个或多个图形
  • ¥15 关于#r语言#的问题:差异分析前数据准备,报错Error in data[, sampleName1] : subscript out of bounds请问怎么解决呀以下是全部代码:
  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误