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?
3
Answers
Divide the number by 5 and get the integer part. For example 7/5=1.4. Then multiply it by the integer part by 5 1×5=5. Then add 5 and you will see that it is in the range of 5-10. 19/5=3.8 3×5=15 15+5=20 In the range of 15-20. You can do this for other ranges as well.
You can use the
floor()
function to find the previous or next numbers you need. Withfloor($value / $fixed)
you get a number smaller or greater than $fixed (except you use a multiple of$fixed
). This number x$fixed
then is your previous number. When you add$fixed
to that number, you have the greater number.This is how you can get such ranges:
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 andend
key will be the end of the rangeExample1
Example2