1

我想知道如何在设定范围内进行数字的加法和减法,并且会自行循环,例如下面的示例;

范围:1 - 10

所以如果我现在有数字 7 并添加 5,我希望数字变为 2

8、9、10,循环到 1、2。

如果我减去也是一样,所以我有数字 3,我减去 4,所以我应该剩下 9。

2, 1, 循环到 10, 9

我希望这是有道理的。

谢谢。

4

6 回答 6

2

您可以使用 % 运算符。

它计算除法后的余数。

例如:

$d = 10;

$x = 7;

$y = 5;

echo ($x + $y) % $d;

2;

使用负值,您只需删除 MINUS

于 2012-04-05T10:25:30.750 回答
0

使用模运算符。

result = (a + b) % 10;
于 2012-04-05T10:25:24.240 回答
0

您可以使用模函数,例如 (7+5)%10 = 2

于 2012-04-05T10:25:36.477 回答
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;
    }
}

希望能帮助到你。

于 2012-04-05T10:30:41.897 回答
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
于 2012-04-05T11:06:01.533 回答
0

正如其他人所展示的那样,模数会起到作用,但您还必须考虑范围的下限。

例如,循环一个小时范围内的任意值将起作用,因为它是从零开始的。但是如果你想在一个月范围内循环一个值,你会在最后一天遇到麻烦,因为:

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);
于 2012-09-09T23:58:25.553 回答