我需要将变量始终更改为在一定范围内(0-5),处理轮次。例如,如果变量命中6,则应将其更改为0;如果它命中-1,它应该改为5.这是我的伪,任何想法?
function get_further_letter($index = 5, $number = 3, $direction = "encode") {
$count = 5;
switch ($direction)
{
case "encode":
$index = $index + $number; //pushes the value of index to 8
break;
}
// Start my attempt
while ($index > $count)
{
$index = $index - $count;
}
// End my attempt
return $index;
}
>> get_further_letter(5, 3); // 5 + 3 = 8, 8 is 1r3, so keep r3 as 0, 1, 2
2
>> get_further_letter(5, 4); // 5 + 4 = 9, 9 is 1r4, so keep r4 as 0, 1, 2, 3
3
>> get_further_letter(5, -7); // 5 + -7 = -2, -2 is -1r-2, so keep r-2 as 0, 1, 2, 3
4
对于模糊的抱歉,我对如何使其工作感到非常困惑,所以说清楚我的要求有点困难。
我在最后一个例子中得到-2,因为在我的情况下,值将是一个数组索引。我不确定这是否真的会发生。
答案 0 :(得分:3)
将值保持在[0 .. n)
范围内的通用函数是:
function fn($x, $n)
{
return ($x % $n + $n) % $n;
}
双模数是处理负数。