2011-01-09 46 views
-1

我有这个JavaScript公式,我现在正试图转换为PHP。来自JavaScript的PHP公式

的JavaScript:

LVL=new Array(); 
LVL[1]=128; 
LVL[0]=128; 
m=.05; 
for (i=1;i<101;i++) { 
    if (i>1) { 
     LVL[i]=Math.floor(LVL[i-1]+(LVL[i-1]*m)); 
     m=m+.0015; 
    } 
} 

那么它是一堆的tablefor loopdocument.writes

这里是我到目前为止(不工作):

<?php 
$n = 1; // level 
$m = .05; // exp modifier 
$exp = floor($n*1+($n-1)*$m); 
echo "Level " . $n . ", exp needed: " . $exp; // 128 exp 
?> 

PHP的输出是:Level 1, exp needed: 1,这就是错误的。

应该说:Level 1, exp needed: 128

我在做什么错?

+0

你忘了for循环... – 2011-01-09 01:11:59

+0

哪有`1 * 1 +(1-1)* 0.05`是`128`?在你的PHP代码中你没有事件`128`(而你的JS代码中有`128`)。你的PHP代码看起来完全不同... – 2011-01-09 01:12:29

+0

我不需要循环,因为它只是公式。 – nn2 2011-01-09 01:25:46

回答

1

你做一对夫妇的错误:

    您使用索引
  • (中级别),因为它是 达到该级别所需的经验点数量。
  • 你忘了的(如果你正在测试公式它是确定)

至今代码:

$lvl = array(128,128); 
$modifier=.05; 
for ($i=1;$i<101;i++) { 
    $lvl[$i]=floor($lvl[$i-1]*(1+$modifier)); 
    $modifier+=0.0015; 
} 
foreach ($lvl as $level=>$points) { 
    echo "Level " . $level . ", exp needed: " . $points ."\n<br />"; // 128 exp 
} 
2

直接转录:

$LVL = array(); 
$LVL[1] = 128; 
$LVL[0] = 128; 
$m = .05; 
for ($i = 1; $i < 101; $i++) 
{ 
    if ($i > 1) 
    { 
     $LVL[$i] = floor($LVL[$i-1] + $LVL[$i-1]*$m); 
     $m = $m + .0015 
    } 
} 

你需要建立数组作为其内置自下而上