【问题标题】:can I put the break on the same line我可以把中断放在同一行吗
【发布时间】:2026-01-08 03:35:02
【问题描述】:

我有一个包含 300 多个 case 语句的 switch 语句。

  case 'hello': 
    { $say = 'some text'; }
        break;

case 'hi':
    { $say = 'some text'; }
        break;

为什么中断总是在单独的行上?这是必需的吗?我这样做有什么语法错误吗:

  case 'hello': { $say = 'some text'; } break;
  case 'hi': { $say = 'some text'; } break;

【问题讨论】:

    标签: php switch-statement


    【解决方案1】:

    将换行符放在同一行并没有错。你也不需要括号。

    但是,您是否考虑过使用另一种方法,而不是使用 300 例切换语句。键到值的映射(使用数组)会更快且更易于维护。

    $myArray = array(
        'hello' => 'some text',
        'hi'    => 'some text',
    );
    
    if ( isset($myArray[$switchKey]) ){
        $say = $myArray[$switchKey];
    }else{
        //default case
    }
    

    【讨论】:

    • +1。每次你使用你的 300 个案例条款中的一个,我都会杀了一只猫。
    • @Roberto 哈哈,请不要杀死任何猫。我不会使用那些 case 子句。 Yacoby 的回答很棒,绝对是最佳实践。很抱歉让您接触到切换案例的恐怖。
    【解决方案2】:

    不,PHP 对空格不敏感。分号和大括号分隔语句。

    中断通常在单独的行上,因为最好不要将多个语句放在同一行,并使switch 语句的控制流清晰。

    【讨论】:

      【解决方案3】:

      你的两个例子都是可能的。顺便说一句,我认为在这种情况下括号是不必要的,你也可以写:

      switch ($myVar) {
          case 'hello': $say = 'some text'; break;
          case 'hi': $say = 'some text'; break;
          default: $say = 'something'; break;
      }
      

      【讨论】:

        【解决方案4】:

        是的,你可以将break语句放在case块中,它只会寻找break语句
        关闭开关盒。

        【讨论】:

          【解决方案5】:

          顺便说一句,我建议使用 php_codesniffer 之类的东西来建议您重新编码样式。

          【讨论】:

            最近更新 更多