我愉快地发现可以在 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我尝试用单引号将这些案例括起来,但这仍然没有通过。这似乎与上面的示例一致。我在这里缺少什么语法?
1 回答
慕尼黑的夜晚无繁华
TA贡献1864条经验 获得超6个赞
标签不能只是数字,因此您只能通过为cases您想要定位的额外标签(并gotos使用这些新标签进行修改)来解决它:
<?php
function foo($value) {
switch ($value) {
case 222:
return "A";
case 231:
label231: // new label here
return "B";
case 234:
goto label231;
case 237:
return "C";
case 251:
goto label231;
case 285:
return "D";
}
}
var_dump(foo(251));
但是,正如评论中提到的,我更喜欢选择不同的方法(关联数组等)。
- 1 回答
- 0 关注
- 94 浏览
添加回答
举报
0/150
提交
取消