sameold
sameold

Reputation: 19242

Refactoring 2 similar if statements

Would you write this code any differently? I don't mind tertiary operator by the way so any ideas that include it are also welcome

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

Upvotes: 1

Views: 80

Answers (2)

Andrew Cooper
Andrew Cooper

Reputation: 32576

You could do something like this:

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

Upvotes: 0

Carl Manaster
Carl Manaster

Reputation: 40336

$min = min($startYear, $stopYear);
$max = max($startYear, $stopYear);

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

I don't know php, so min and max might have different syntax, but you get the idea.

Upvotes: 4

Related Questions