【发布时间】:2012-04-05 10:20:07
【问题描述】:
我想知道如何在设定的范围内进行数字的加减运算,以及如何循环返回,例如下面的示例;
范围:1 - 10
所以如果我现在有数字 7 并添加 5,我希望数字变为 2
8、9、10,循环到 1、2。
如果我减去也是一样,所以我有数字 3,我减去 4,所以我应该剩下 9。
2, 1, 循环到 10, 9
我希望这是有道理的。
谢谢。
【问题讨论】:
标签: php math range addition subtraction
我想知道如何在设定的范围内进行数字的加减运算,以及如何循环返回,例如下面的示例;
范围:1 - 10
所以如果我现在有数字 7 并添加 5,我希望数字变为 2
8、9、10,循环到 1、2。
如果我减去也是一样,所以我有数字 3,我减去 4,所以我应该剩下 9。
2, 1, 循环到 10, 9
我希望这是有道理的。
谢谢。
【问题讨论】:
标签: php math range addition subtraction
您可以使用 % 运算符。
除法后计算余数。
例如:
$d = 10;
$x = 7;
$y = 5;
echo ($x + $y) % $d;
给2;
对于负值,您只需删除 MINUS
【讨论】:
$r = 10; echo (2 - 5) % $r; 它返回给我 -3 当它低于 1 我需要它转到 10 然后从那里下降,所以上面应该输出我 7。跨度>
$r = 10; $s = 2 - 5; echo $s < 0 ? $r + $s : $s % $r;
使用取模运算符。
result = (a + b) % 10;
【讨论】:
您可以使用模函数,例如 (7+5)%10 = 2
【讨论】:
试试这个:
$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;
}
}
希望对你有帮助。
【讨论】:
你可以用类似的代码来做到这一点
$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
【讨论】:
Modulo 会像其他人展示的那样发挥作用,但您还必须考虑范围的下限。
例如在一小时范围内循环任意值将起作用,因为它是从零开始的。但是如果你想在一个月范围内循环一个值,你会在最后一天遇到麻烦,因为:
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);
【讨论】: