内容简介:翻译自:https://stackoverflow.com/questions/1653079/is-this-a-bad-pattern-switch-inside-for-foreach-loop
我发现自己编写的代码如下:
foreach($array as $key => $value) {
switch($key) {
case 'something':
doSomething($value);
break;
case 'somethingelse':
doSomethingElse($value);
break;
}
}
有没有更好的方法来解决这个问题?对我来说似乎很脏,但我可能只是在思考它.
我能想到的唯一另一种选择是每个键的if语句,这似乎没有任何好处.即:
if($array[0] == 'something') {
doSomething($array[0]);
}
if($array[1] == 'somethingelse') {
doSomethingElse($array[1]);
}
(或类似的东西)
如果需要,我可以发布确切的代码,但这是发生的事情的概要.请批评,但请记住,我在这里寻求帮助.因此,如果我做了一些非常错误的事情,那就指出来吧.
将函数映射到字典/关联数组中的键是这种情况的常用方法(正如@jldupont所提到的) – 不仅在 PHP 中,而且在许多具有关联数组的动态语言中.例如,Python和 Lua 甚至没有switch语句 – 这几乎是模拟交换机的唯一方法.
考虑这种方法:
<?
$arr[] = "bye";
$arr[] = "hi";
function sayHi() { print("Hello.\n"); }
function sayBye() { print("Goodbye.\n"); }
$funcs["hi"] = sayHi;
$funcs["bye"] = sayBye;
foreach($arr as $k){
$funcs[$k]();
}
?>
输出:
Goodbye. Hello.
当你只有两个不同的值时,这是过度的,但显然它变得更有价值,因为你必须覆盖的情况数量增加.
翻译自:https://stackoverflow.com/questions/1653079/is-this-a-bad-pattern-switch-inside-for-foreach-loop
以上所述就是小编给大家介绍的《php – 这是一个糟糕的模式吗? (切换/ foreach循环内部)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 游戏制作之路(35)从开始菜单切换到游戏循环
- Egret场景切换管理类切换和单例使用方法
- Spring项目中使用两种方法动态切换数据源,多数据源切换
- Pear Admin Ant 1.1.0.Release 正式发布,新增布局切换、主题切换、工作空间
- MySQL -- 主从切换
- Android自动切换夜间主题
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Automate This
Christopher Steiner / Portfolio / 2013-8-9 / USD 25.95
"The rousing story of the last gasp of human agency and how today's best and brightest minds are endeavoring to put an end to it." It used to be that to diagnose an illness, interpret legal docume......一起来看看 《Automate This》 这本书的介绍吧!