I am trying to set a range by a fixed number for an example.
$fixed = 5;
$value = 7;
So if my value is 7 it will be in a range from 5 to 10
I was trying the old fashion method to add + 5 to the value, but it goes out of the range. (7 + 5 = 12) and it has to be in range between 5 to 10.
$value = 19; // range in 15 to 20
$value = 23; // range in 20 to 25
Any idea?
This is how you can get such ranges:
function getRange(int $value, int $moduloClass = 5) {
$start = $value - ($value % $moduloClass);
$end = $start + $moduloClass;
return [
'start' => $start,
'end' => $end
];
}
Explanation:
function
(or a method) instead$value
passed to this function$moduloClass
, so $value
will be equal to the greatest number divisible with $moduloClass
. The reason why I made this a parameter is to allow you to choose other range sizes too if needed$moduloClass
is 5, so if you do not pass a value for this parameter, it will be assumed to be 5$value
to $moduloClass
and subtract the result from $value
. If $value
is 7 and $moduloClass
is 5, then $value % $moduloClass
is 2 and $value - 2
is 7 - 2 = 5, so this will be assigned to $start
$end
will equal to $start + $moduloClass
, so if $start
was 5, then $end
will be 10start
key will be the start of the range and end
key will be the end of the range$range = getRange(7); //$moduloClass is defaulting to 5
echo "[" . $range['start'] . ", " . $range['end'] . "]";
//result will be [5, 10]
$range = getRange(345, 100);
echo "[" . $range['start'] . ", " . $range['end'] . "]";
//result will be [300, 400]