php - 带 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
我尝试用单引号将这些案例括起来,但这仍然没有通过。这似乎与上面的示例一致。我在这里缺少什么语法?
解决方案
标签不能只是数字,因此您只能通过为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));
但是,正如评论中提到的,我更喜欢选择不同的方法(关联数组等)。
推荐阅读
- numpy - 将 numpy 中的对角化扩展到 2 维以上
- c++ - 排序后如何在数组中打印一定范围的值
- qt - 如何将 QTextCursor 从 QTextEdit 移动到另一个 QTextEdit?
- elixir - 使用 insert_all 只插入一条记录,它不是第一条
- python-3.x - 尝试将连接组件与 Wand 和 ImageMagick 6 一起使用时出错
- java - 如何使用参数 Math.abs(b)-Math(a) 进行排序
- python-3.x - 如何将字典附加到母字典的键
- opengl - 如何在模糊着色器中添加 alpha 值
- excel - 使用 VBA 运行时问题批量发送电子邮件
- javascript - 将 HTML5 数据属性解析为 document.querySelector