Как конвертировать if / else if в циклы - PullRequest
0 голосов
/ 23 мая 2018

У меня плохая привычка писать 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 голосов
/ 23 мая 2018

Я не уверен, что это лучшее решение, но когда я начал использовать классы, я начал использовать предопределенные переменные, массивы и объекты.В вашей ситуации я бы использовал массив, который можно использовать для нескольких функций:

$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");
   } ...
0 голосов
/ 23 мая 2018

мой простой ответ за последний, вы создаете словарь, а не если условие типа

my_array = {1:'foo', 2:'bar', 3:'azerty', 4:'qwerty'};
return my_array[value]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...