如何将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转换为循环的主要内容,如果未能解决你的问题,请参考以下文章

for循环中的if else语句[java]

转换器练习:跳过 if 和 else if 语句 [关闭]

如何在熊猫中将 if/else 转换为 np.where

如何将 if else 逻辑转换为动态选择?

如何将变量转换为数组

将 Blade If Else 转换为 Vue If Else