使用PHP,如何制作一个计数器,将任何Int转换为1到9999?
我有一个内部计数器,计数范围为0-9999999 我希望它显示为0-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显示为1
- 1显示为2
- 9998显示为9999
- 9999显示为1
- 10000个显示器显示为2个
- 19999显示为1
- 2万台显示器为2台
+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
.... ....