带 goto 的 PHP 数字大小写

我愉快地发现可以在 PHP中使用 goto :


    case 222: return "A"; break;

    case 231: return "B"; break;

    case 234: goto 231;

    case 237: return "C"; break;

    case 251: goto 231;

    case 285: return "D"; break;

我有一些这样的代码。有很多键共享相同的值,所以我尝试使用 goto 来消除冗余。我使用了一个开关,因为它在这里比 if/else 分支更简单。


由于各种原因,每个案例都必须如上所述明确定义,即使它只是针对另一个案例。但是,通过验证器运行它,我得到Parse error: syntax error, unexpected ''231'' (T_CONSTANT_ENCAPSED_STRING), expecting identifier (T_STRING) in your code


我尝试用单引号将这些案例括起来,但这仍然没有通过。这似乎与上面的示例一致。我在这里缺少什么语法?


胡子哥哥
浏览 95回答 1
1回答

慕尼黑的夜晚无繁华

标签不能只是数字,因此您只能通过为cases您想要定位的额外标签(并gotos使用这些新标签进行修改)来解决它:<?phpfunction foo($value) {&nbsp; &nbsp; switch ($value) {&nbsp; &nbsp; &nbsp; &nbsp; case 222:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return "A";&nbsp; &nbsp; &nbsp; &nbsp; case 231:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; label231: // new label here&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return "B";&nbsp; &nbsp; &nbsp; &nbsp; case 234:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;goto label231;&nbsp; &nbsp; &nbsp; &nbsp; case 237:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return "C";&nbsp; &nbsp; &nbsp; &nbsp; case 251:&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;goto label231;&nbsp; &nbsp; &nbsp; &nbsp; case 285:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return "D";&nbsp; &nbsp; }}var_dump(foo(251));但是,正如评论中提到的,我更喜欢选择不同的方法(关联数组等)。
打开App,查看更多内容
随时随地看视频慕课网APP