You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP switch语句报T_SWITCH错误及多变量判断修复咨询

修复PHP中"unexpected 'switch' (T_SWITCH)"错误及switch语句误用问题

问题根源

你遇到两个关键错误:

  • 语法位置错误:把switch语句直接嵌入到echo的字符串拼接流程中,PHP不允许在字符串连接操作里插入流程控制语句,这是触发"unexpected 'switch'"错误的直接原因。
  • switch语法误用:switch的case后应直接写要匹配的具体值,而非条件表达式(比如case $v['domainrenew']['msetupfee'] == '-1'属于错误写法)。

修复步骤

  1. 提前计算输出内容:把switch逻辑单独抽离,先计算好要显示的文本并存入变量,再将变量嵌入到echo的HTML代码中。
  2. 修正switch的case写法:让case直接对应要匹配的具体值,同时调整逻辑覆盖所需的判断场景。

修复后的完整代码

$mydata = getDomainsPrice();
foreach($mydata as $k => $v)
{
    $is_in_gtld = get_europa($k);
    if($is_in_gtld == 1)
    {
        // 单独处理switch逻辑,得到要输出的内容
        $renewText = '';
        $msetupfee = $v['domainrenew']['msetupfee'];
        $qsetupfee = $v['domainrenew']['qsetupfee'];
        
        switch($msetupfee){
            case '-1':
                $renewText = $qsetupfee;
                break;
            case '0':
                $renewText = "Gratis";
                break;
            default:
                // 额外判断qsetupfee为0的情况
                if($qsetupfee == '0'){
                    $renewText = "Gratis";
                } else {
                    $renewText = $msetupfee;
                }
                break;
        }

        // 输出HTML,嵌入提前计算好的$renewText
        echo "<tr>
        <td><span style=\"font-size: 16px !important;font-weight: 600;color: #1a202c;\">  $k  </span></td>
        <td class=\"dnone\" style=\"border-top: 1px dashed #e5e9f2;font-size: 14px;font-weight: 500;color: rgba(91, 88, 88, 0.9);\"> ".($v['domainregister']['msetupfee'] == '-1' ?  '2' : '1')." </td>
        <td style=\"border-top: 1px dashed #e5e9f2;font-size: 14px;font-weight: 500;color: rgba(91, 88, 88, 0.9);\">"  .($v['domainregister']['msetupfee'] == '-1' ? $v['domainregister']['qsetupfee']  : $v['domainregister']['msetupfee']).  $v['domainregister']['suffix'] . "</td>
        <td style=\"border-top: 1px dashed #e5e9f2;font-size: 14px;font-weight: 500;color: rgba(91, 88, 88, 0.9);\">" .($v['domainrenew']['msetupfee'] == '-1' ? $v['domainrenew']['qsetupfee']  : $v['domainrenew']['msetupfee']).  $v['domainrenew']['suffix'] . "</td>
        <td class=\"dnone\" style=\"border-top: 1px dashed #e5e9f2;font-size: 14px;font-weight: 500;color: rgba(91, 88, 88, 0.9);\">" . $renewText . "</td></tr>";
    }
}

额外说明

  • 原代码第4个<td>末尾多了一个多余的.,已在修复后的代码中移除。
  • 由于qsetupfee == '0'的判断与msetupfee取值无关,将其放到default分支做额外判断,逻辑更清晰。

内容的提问来源于stack exchange,提问作者AndreiG.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 01:40:51