我想知道如何在设定范围内对数字进行加法和减法,然后循环回来,例如下面的内容;
范围:1 - 10
所以,如果我现在拥有数字7并且添加了5,我希望数字转到2
8,9,10,循环到1,2。
如果我减去相同的数字,那么我得到数字3而我减去4所以我应该留下9。
2,1,循环到10,9
我希望这是有道理的。
感谢。
答案 0 :(得分:2)
您可以使用%operator。
计算除法后的余数。
例如:
$d = 10;
$x = 7;
$y = 5;
echo ($x + $y) % $d;
给出2
;
使用负值,您只需删除MINUS
即可答案 1 :(得分:0)
使用模数运算符。
result = (a + b) % 10;
答案 2 :(得分:0)
您可以使用模数函数,如(7 + 5)%10 = 2
答案 3 :(得分:0)
试试这个:
$range = range(1,10);
$min = min($range);
$max = max($range);
function operate( $a, $b, $operation ) {
global $max, $min;
switch( $operation ) {
case '+':
$a += $b;
break;
case '-':
$a -= $b;
break;
}
if( $a < $min ) {
return $max + $a;
} else if( $a > $max ) {
return $a - $max;
}
}
希望它有所帮助。
答案 4 :(得分:0)
您可以使用
等代码执行此操作$range = array('from' => 3, 'to' => 13);
$dist = $range['to'] - $range['from'];
$a = 7;
$b = 14;
echo ($dist + ($a % $range['to'] - $b % $range['to'])) % $dist; // $a - $b
echo ($dist + ($a % $range['to'] + $b % $range['to'])) % $dist; // $a + $b
答案 5 :(得分:0)
Modulo会像其他人所说的那样做,但你也必须考虑范围的下限。
E.g。在一小时范围内循环任意值将起作用,因为它是从零开始的。但是如果你想在一个月的范围内循环一个值,你会在最后一天遇到麻烦,因为:
31%31 = 0
所以当你应该留在31岁时你会循环为零。
要处理任何范围,您需要这样做:
$min = 5;
$max = 15;
$value = 25; // The range is 11, so we want this turned into 14
$range = $max - $min + 1;
$value = (($value-$min) % $range) + $min;
处理低于最低值的值:
$range = $max - $min + 1;
$value = ($min - $value) % $range;
$value = $max - ($value - 1);