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

使用PHP,如何制作一个计数器,将任何Int转换为1到9999?,php,math,modulus,Php,Math,Modulus,我有一个内部计数器,计数范围为0-9999999 我希望它显示为0-9999之间的数字,然后再次滚动 这意味着: 0显示为1 1显示为2 9998显示为9999 9999显示为1 10000个显示器显示为2个 19999显示为1 2万台显示器为2台 编辑: 答案是1+$number%9999(谢谢@Brad Christie)。我的预期结果表错了。(谢谢@tevod) 使用MOD,它将为您提供9999之后的余数(例如,任何数字除以9999都可以在N次内进行,余数为Y(您将以Y作为值结束)

我有一个内部计数器,计数范围为0-9999999

我希望它显示为0-9999之间的数字,然后再次滚动

这意味着:

  • 0显示为1
  • 1显示为2
  • 9998显示为9999
  • 9999显示为1
  • 10000个显示器显示为2个
  • 19999显示为1
  • 2万台显示器为2台
编辑:

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

使用MOD,它将为您提供9999之后的余数(例如,任何数字除以9999都可以在N次内进行,余数为Y(您将以Y作为值结束)

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


另请参见带10000的Take提醒,它保证结果在0和9999之间并滚动

$result = $int % 10000;

您的值表与您要求的不匹配。在本例中,您使用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
....      ....
输入输出
0       1
1       2
....      ....
9997      9998
9998      9999

9999 1你听说过模(%)运算符吗?@djdy,modulo,但我很难找到一个在所有数字中都能保持一致的优雅答案。你所说的“越来越大的余数”是什么意思?%是除法后的余数,总是0。
X%9999+1
1999
20000可以得到你想要的ode>边缘案例是个例外。这两个数字的特殊之处是什么?(请参阅)要点和good job是唯一认识到这一点的人。看起来你是对的!
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
....      ....