使用PHP,如何创建一个将任何Int转换为1到9999的计数器?

时间:2011-11-10 19:00:42

标签: php math modulus

我有一个内部计数器,从0-999999999999开始。

我希望这显示为0-9999之间的数字,然后再次翻转。

这意味着:

  • 0显示为1
  • 1显示为2
  • 9998显示为9999
  • ...
  • 9999显示为1
  • 10000显示为2
  • ...
  • 19999显示为1
  • 20000显示为2

编辑:

1 + $ number%9999就是答案(谢谢@Brad Christie)。我的预期结果表是错误的。 (谢谢@Tevo D)

3 个答案:

答案 0 :(得分:4)

$x = 9280293;
$baseNineNineNineNine = $x % 9999;

使用MOD,它将为你提供9999之后的余数(例如任何数字除以9999可以进入N次,余数为Y(你最终将Y作为值)

对于您要查找的数字,您可能需要+1在MOD(%)后获得的任何值,或使用10000

另请参阅Modulus Operator

答案 1 :(得分:3)

使用10000提醒,保证结果在0到9999之间并翻转

$result = $int % 10000;

答案 2 :(得分:2)

您的价值观表与您要求的不符。在该示例中,您使用9999个结果值(1-9999)表示10000个输入值。在文中你要说10000输出值(0-9999)。

这是我认为你真正要求的。该算法将输出1-9999,然后再次翻转为1。

换句话说,此解决方案将提供四位非零值:

$result = $int % 9999 + 1;

输出将与您的示例不匹配,因为您的示例使其滚动每10000个值,而不是9999.这是输出:

input   output
0       1
1       2
....      ....
9997      9998
9998      9999
9999      1       <--- 9999 * 1
10000     2
....      ....
19996     9998
19997     9999
19998     1       <--- 9999 * 2
19999     2
....      ....
19995     9998
19996     9999
19997     1       <--- 9999 * 3
19998     2
....      ....