I have to check if a value is withing a range (0..9, 10..19..up to 100) and return a value depending on the range. The cyclomatic complexity of my function is 12 and I need to lower it to at least 9. I'm really at a loss here.
I wanted to use an associative array (to use like a Dictionary or a Hash table), but I don't think it works with ranges and I don't want to have an array explicitly declared with 100 entries!
$value = 23;
switch(true) {
case in_array($value, range(0,9)):
return -10;
break;
case in_array($value, range(10,19)):
return -7;
break;
case in_array($value, range(20,29)):
return -5;
break;
case in_array($value, range(30,39)):
return 3;
break;
case in_array($value, range(40,49)):
return 4;
break;
case in_array($value, range(50,59)):
return 5;
break;
case in_array($value, range(60,69)):
return 6;
break;
case in_array($value, range(70,79)):
return 7;
break;
case in_array($value, range(80,89)):
return 8;
break;
case in_array($value, range(90,99)):
return 9;
break;
case in_array($value, range(100,100)):
return 10;
break;
default:
return 0;
break;
}
Can someone help? Is there a simpler way to do that? TIA