为什么这个函数在php中不起作用?
这是我的功能 这意味着在进入下一个级别之前,用户可以获得所需的xp量,但只能通过级别1到2工作,如果输入了级别3所需的xp,则会失败 XP是每级的两倍,所以从1级到2级是10,2到3级是20,3到4级是40等等 $user['xp']是一个int,为了更好地解释,这里有一些函数返回不同值的示例为什么这个函数在php中不起作用?,php,function,Php,Function,这是我的功能 这意味着在进入下一个级别之前,用户可以获得所需的xp量,但只能通过级别1到2工作,如果输入了级别3所需的xp,则会失败 XP是每级的两倍,所以从1级到2级是10,2到3级是20,3到4级是40等等 $user['xp']是一个int,为了更好地解释,这里有一些函数返回不同值的示例 $user['xp']==1,级别1,xpGot 1,xpNeeded 9,10% $user['xp']==5,级别1,xpGot 5,xpNeeded 5,50% $user['xp']==9,级别1
function calculateLevel($xpGot) {
$level = 1;
$xpNeeded = 10;
while ($xpGot >= $xpNeeded) {
$level++;
$xpGot %= $xpNeeded;
$xpNeeded *= 2;
}
if ($xpGot < $xpNeeded) {
$xp = $xpGot / $xpNeeded * 100;
echo '<p>Level: ' . $level . '</p>';
echo '<div class="displayBarWrap" title="' . $xpGot . '/' . $xpNeeded . ' XP (' . $xp . '%)">
<p>XP:</p>
<div class="displayBar"><div style="width: ' . $xp . '%;"></div></div></div>';
}
}
calculateLevel($user['xp']);
函数calculateLevel($xpget){
$level=1;
$xp=10;
而($xpGot>=$xpNeeded){
$level++;
$xpGot%=$xpNeeded;
$xp*=2;
}
如果($xpGot<$xpNeeded){
$xp=$xpget/$xpNeeded*100;
回显“级别:”.$Level.“”;
回声'
XP:
';
}
}
calculateLevel($user['xp']);
走这条线
$xpGot %= $xpNeeded;
如果$xpget是15或45没有区别,%10
仍将返回5。模运算符将左操作数除以右操作数并返回余数
按照@scessor的建议将其更改为
-=
,这可能是您想要的。我认为您需要以下内容:将%=
替换为-=
:
$xpGot -= $xpNeeded;
有了其他提到的修复,以及echo中可能出现的错误,这对我来说很有用:
<?php
function calculateLevel($xpGot) {
$level = 1;
$xpNeeded = 10;
if ($xpGot < $xpNeeded) /* NEW! */
return;
while ($xpGot >= $xpNeeded) {
$level++;
$xpGot -= $xpNeeded; /* FIXED (other answers!) */
$xpNeeded *= 2;
}
if ($xpGot < $xpNeeded) {
$xp = $xpGot / $xpNeeded * 100;
echo '<p>Level: ' . $level . '</p>';
/* FIXED ? */
echo '<div class="displayBarWrap" title="' . $xpGot . '/' . $xpNeeded . ' XP (' . $xp . '%)"> <p>XP:</p> <div class="displayBar"><div style="width: ' . $xp . '%;"></div></div></div>';
}
}
calculateLevel($user['xp']);
?>
用户['xp']的值是多少?三级的xpget值应该是多少?因为“%”操作将xpget的值降低到比xpNeeded低的程度,因此while循环只运行一次,永远不会达到级别=3。不确定你是否想这样做…第3级应该是10+20+40,所以70,因为我使用的是模数,而不是减数。这是可行的,但是如果用户一次升级2级,它会从每一级升级除法余数吗?这就是我试图用modolus实现的东西?但是如果我得到1xp,它现在就失败了。它把所有东西都抛到了负lolMy坏了,是不是一个打字错误现在似乎正在工作,谢谢,只是现在进一步测试它:)用1000的值试试,我不会超过2级,使用wamp PHP5.3.5你也需要使用其他人发布的修复程序<代码>$xpGot-=$xpNeeded代码>