PHP按级别获取经验 [英] PHP Get Experience by Level
问题描述
我有这段代码,可以循环1到99,并且是一个公式.
I have this piece of code that loops 1 through 99 and is a formula.
function getExperienceByLevel ($maxLevel)
{
$levels = array ();
$current = 0;
for ($i = 1; $i <= $maxLevel; $i++)
{
$levels[$i - 1] = floor ($current / 4);
$current += floor($i+300*pow(2, ($i/9.75)));
}
return $levels;
}
首先,您像这样启动它 $ aLevels = getExperienceByLevel(99);
然后查看要达到 6
等级需要多少经验值,请执行此操作echo $ aLevels [5];
,因为它是一个数组.
First you initiate it like so $aLevels = getExperienceByLevel(99);
then to see how much EXP you need to get to level 6
you do this echo $aLevels[5];
since it's an array.
现在,我正在尝试反向操作.通过EXP获取等级.
Now I'm trying to do reverse. Get Level by EXP.
function getLevelByExp($exp)
{
$myLevel = 0;
$aLevels = getExperienceByLevel(99);
for ($i = 1; $i < 100; $i++)
{
if ($exp > $aLevels[$i-1])
{
return $myLevel;
}
}
}
在调用 getLevelByExp(1124);
或其中的任何数字时,它似乎返回零.但是,当您在该语句中放入回声时,它似乎起作用.
When called upon getLevelByExp(1124);
or any number inside, it seems to return a zero. But it seems to work when you put echos inside that statement.
就像而不是 return $ myLevel
一样,执行 echo您已达到$ i< br/>的级别";
,它将一直执行到您已获得EXP的当前水平.
Like instead of return $myLevel
do echo "You are up to level $i<br />";
and it will go all the way up to the current level you've gained EXP for.
但是,当我只想返回一个数字时,仍然无法使用.
But still.. doesn't work when I want to simply return a number.
推荐答案
这似乎比您的功能更好:
This seems to work better than your function:
function getLevelByExp($exp)
{
$aLevels = getExperienceByLevel(99);
for ($i = 0; $i <= 99; ++$i)
{
//echo "cmp $exp >= aLevels[$i]={$aLevels[$i]}\n";
if ($exp <= $aLevels[$i])
return $i - 1;
}
return -1;
}
在某些情况下(例如 $ exp
为零时)需要改进.
It needs improvement for the edge cases, such as when $exp
is zero.
这篇关于PHP按级别获取经验的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!