簡體   English   中英

PHP switch語句(endswitch)為其他語法提供了Parse錯誤

[英]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 ...

myview.phtml

<?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后,除了defaultcase

<?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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM