我有一个坏习惯,如果/我可以在任何地方写if / else 我有不同类型的结构,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'; ...
写这一切的最佳方法是什么?
是否有不同的速度,或者只是在使用循环的可维护性方面更好?
答案 0 :(得分:1)
我的最后一个简单答案是你创建一个字典,而不是像
这样的条件my_array = {1:'foo', 2:'bar', 3:'azerty', 4:'qwerty'};
return my_array[value]
答案 1 :(得分:0)
我不确定这是否是更好的解决方案但是当我开始使用类时,我开始使用预定义变量,数组和对象。在你的情况下,我会使用一个可用于多种功能的数组:
$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");
} ...