Dan*_*mak 3 php math if-statement
我的问题是如何用数学公式替换那些?
if ($l <= 3500)
{
$min = 100;
}
elseif ($l <= 4000)
{
$min = 120;
}
elseif ($l <= 4500)
{
$min = 140;
}
elseif ($l <= 5000)
{
$min = 160;
}
Run Code Online (Sandbox Code Playgroud)
如你所见,每500个级别提高20个.
如你所见,每500个级别提高20个.
嗯,这就是你的公式.
$min = 100 + ceil(($l-3500)/500) * 20;
Run Code Online (Sandbox Code Playgroud)
$l 从3500开始减去.ceil()的结果是因为我们只想在传递整个值时跳转.如果我们想要解决$l小于3500 的情况并将100设置为最小值,我们还需要$l-3500大于零的资产.我们可以这样做:
$min = 100 + ceil(max(0,$l-3500)/500) * 20;
Run Code Online (Sandbox Code Playgroud)
我们实际上在做的是绘制一条线.就像你自己说的那样,我们会为每一个不变的量持续量.我们这里有一些叫线性进展的东西.
太棒了,所以我们认识到了我们面临的问题.我们有一条想象线来绘制,我们想要整数值.接下来是什么?好吧,让我们看一下这条线的起点?
在你的情况下,答案非常简单.
if ($l <= 3500) {
$min = 100;
}
Run Code Online (Sandbox Code Playgroud)
这是我们的出发点.所以我们知道我们的观点(3500,100).这意味着结果开始于100,原点开始于3500.
我们知道我们的公式是以.的形式出现的100+<something>.那是什么东西?
就像你说的那样,你每提升20个等级就有20个.所以我们知道我们20/500每移动1个等级(因为如果我们将它乘以500得到我们的原始规则).我们也知道(从以前)我们开始3500.
现在,我们可能很想使用$min = 100 + ($l-3500) * (20/500);,这几乎是正确的.这里唯一的问题是你只需要整数值.这就是为什么我们ceil将level/500的值仅用于整个步骤.
我尽量用尽可能少的数学术语来保持这个,你可以查看维基百科页面,如果你想要更正式的东西.如果您想要任何澄清 - 请告诉我
| 归档时间: |
|
| 查看次数: |
76 次 |
| 最近记录: |