![](/img/trans.png)
[英]How to make using “alternative syntax” rather than “curly-brace syntax” in php? (Using Endswitch Syntactic Sugar)
[英]PHP switch statement (endswitch) gives Parse error for alternative syntax
我收到Parse error: syntax error, unexpected '', expecting endswitch (T_ENDSWITCH) or case (T_CASE) or default (T_DEFAULT) in ...
在以下代碼中Parse error: syntax error, unexpected '', expecting endswitch (T_ENDSWITCH) or case (T_CASE) or default (T_DEFAULT) in ...
<?php switch ($oEx->getCode()): ?>
<?php default: ?>
Stuff
<?php endswitch; ?>
<?php switch ($oEx->getCode()):
endswitch; ?>
為什么? 解決方法是在結束標記之前添加一個偽造的情況,如下所示 ,但我不明白為什么這是必要的。
<?php switch ($oEx->getCode()): case -9999: break; ?>
<?php default: ?>
Stuff
<?php endswitch; ?>
參見手冊 :
警告 switch語句和第一種情況之間的任何輸出(包括空格)都將導致語法錯誤。 例如,這是無效的:
<?php switch ($foo): ?>
<?php case 1: ?>
...
<?php endswitch ?>
鑒於這是有效的,因為將switch語句后的尾隨換行符視為結束符?>的一部分,因此在switch和case之間沒有任何輸出:
<?php switch ($foo): ?>
<?php case 1: ?>
...
<?php endswitch ?>
問題不是結尾的PHP標記,而是空格。 我認為,如果您按以下方式修改了原始代碼,則應該擺脫語法錯誤:
<?php switch ($oEx->getCode()): ?>
<?php default: ?>
Stuff
<?php endswitch; ?>
注意,唯一的更改是刪除了switch
語句和default
情況之間的換行符。
進行switch
后,除了default
或case
<?php switch ($oEx->getCode()): ?>
//You can't have anything else here
<?php default: ?>
Stuff
<?php endswitch; ?>
因此,您必須放置一個默認值或一個案例,而無需嵌套換行或換行:
<?php switch ($oEx->getCode()): ?>
<?php default: ?>
Stuff
<?php endswitch; ?>
<?php switch (1):
case 1:?>
<div>foo1</div>
<?php break;?>
<?php default:?>
<div>foo2</div>
<?php endswitch; ?>
我嘗試這段代碼,他的工作
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.