Рефакторинг 2 похожих операторов if - PullRequest
1 голос
/ 20 мая 2011

Не могли бы вы написать этот код по-другому? Кстати, я не против третичного оператора, поэтому любые идеи, которые его включают, также приветствуются

if ($stopYear < $startYear) {
   for ($i = $startYear; $i >= $stopYear; $i--) {
     $yearMultiOptions[$i] = $i;
   }
} else {
   for ($i = $startYear; $i <= $stopYear; $i++) {
     $yearMultiOptions[$i] = $i;
   }
}

Ответы [ 2 ]

4 голосов
/ 20 мая 2011
$min = min($startYear, $stopYear);
$max = max($startYear, $stopYear);

for ($i = $min; $i <= $max; $i++) {
    $yearMultiOptions[$i] = $i;
}

Я не знаю php, поэтому min и max могут иметь разный синтаксис, но вы понимаете.

0 голосов
/ 20 мая 2011

Вы можете сделать что-то вроде этого:

$step = ($stopYear < $startYear) ? -1 : 1;
for ($i = $startYear; $i != $stopYear; $i += step) {
    $yearMultiOptions[$i] = $i;
}
...