如何将if / else if转换为循环

时间:2018-05-23 10:35:35

标签: php algorithm loops if-statement

我有一个坏习惯,如果/我可以在任何地方写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'; ...

写这一切的最佳方法是什么?
是否有不同的速度,或者只是在使用循环的可维护性方面更好?

2 个答案:

答案 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");
   } ...