正如您所看到的,在case 1:
行中打开标记之前有一个领先的空间:
$var = 1;
switch ($var):
?>
<?php case 1:?> // BUGGY LINE
<?php
echo 1;
break;
case 2:
echo 2;
break;
endswitch;
?>
它产生错误:
( ! ) Parse error: syntax error, unexpected ' ', expecting endswitch (T_ENDSWITCH) or case (T_CASE) or default (T_DEFAULT)
如果我删除那个空间,一切都OK。
是什么原因?
这是(switch)控制结构的替代语法的默认行为。正如documentation所述:
switch语句和第一种情况之间的任何输出(包括空格)都将导致语法错误。
无论你在那里放置1个空格还是只放任何字符都会引发错误。在switch语句的开头和switch语句的下一段(case
,default
或endswitch
)之间不应该有任何东西。