如何将if / else if转换为循环
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将if / else if转换为循环相关的知识,希望对你有一定的参考价值。
如果/我在任何地方,我都有写坏/坏的习惯。 我有不同类型的结构与if / else if / else if ..但我注意到它可以很快变成数百行,所以我想把它改成循环。
这是第一种类型:
if($row['event_code'] == 1)
$row['event_code'] = 1;
elseif($row['event_code'] == 4)
$row['event_code'] = 2;
elseif($row['event_code'] == 5)
$row['event_code'] = 3;
elseif($row['event_code'] == 8)
$row['event_code'] = 4;
elseif($row['event_code'] == 9)
$row['event_code'] = 5; ...
这取自我从数据库中获取数据的代码。 正如您所看到的,条件可以跳过数字,但它总是会为+1分配一个新值。
在第二个我使用上面的代码的新值,我推入一个正确的颜色数组:
foreach($datasetR1 as $value){
if($value == 1){
array_push($intColors, "#82f827");
}
elseif($value == 2){
array_push($intColors, "#ff4040");
}
elseif($value == 3){
array_push($intColors, "#31698A");
} ...
在最后一个中,我根据值放置一个字符串:
if (value === 1)
return 'foo';
else if (value === 2)
return 'bar';
else if (value === 3)
return 'azerty';
else if (value === 4)
return 'qwerty'; ...
写这一切的最好方法是什么? 是否有不同的速度或仅在使用循环的可维护性方面更好?
答案
我最后一个简单的答案,你做一个字典而不是像条件一样
my_array = {1:'foo', 2:'bar', 3:'azerty', 4:'qwerty'};
return my_array[value]
另一答案
我不确定这是否是一个更好的解决方案但是当我开始使用类时,我开始使用预定义变量,数组和对象。在你的情况下,我会使用一个可用于多种功能的数组:
$return = array(
1 => '#82f827',
2 => '#ff4040',
);
return $return[$value];
这将取代您的代码的这一部分:
foreach($datasetR1 as $value){
if($value == 1){
array_push($intColors, "#82f827");
} elseif($value == 2){
array_push($intColors, "#ff4040");
} elseif($value == 3){
array_push($intColors, "#31698A");
} ...
以上是关于如何将if / else if转换为循环的主要内容,如果未能解决你的问题,请参考以下文章