# Finding NPV (net present value) with PHP

Hello Experts!

I need some help finding NPV from an array of reruns.

Let say i have an array containing 20 years of payments with array[0] being the capital outlay.

``````Array ( [0] => -29669.45 [1] => 84862.5 [2] => 84913.414741969 [3] => 84964.360031128 [4] => 85015.335885805 [5] => 85066.342324338 [6] => 85117.379365077 [7] => 85168.447026381 [8] => 85219.545326622 [9] => 85270.674284183 [10] => 85321.833917456 [11] => 85373.024244847 [12] => 85424.245284771 [13] => 85475.497055654 [14] => 85526.779575933 [15] => 85578.092864059 [16] => 85629.436938489 [17] => 85680.811817695 [18] => 85732.21752016 [19] => 85783.654064375 [20] => 85835.121468845 [21] => 354928.55 )
``````

Now... let say i wanted to find the net present value in year 10 with a ROR or discount rate of 8.15%

How would I do that?

My current script:
``````function npv(\$rate, \$values, \$year) {
for (\$i=0;\$i<=\$year;\$i+=1) {
\$npv = \$values[\$year - \$i] + \$npv / (1 + \$rate);
}
return '\$'.number_format(\$npv,2,'.',',');
}

echo npv(.0815, \$paymentArray, 10);
``````

Any Ideas would be awesome!
LVL 2
###### Who is Participating?

Commented:
Ah, I see it. The value that's 10 years old needs to be divided by the rate 10 times. Or (1+rate)^10
If you do this
\$npv = (\$values[\$year - \$i] + \$npv) / (1 + \$rate);
then it should work, since you are already running backward through the array.

By the way, I would do the for loop like this, but it either way is the same.
for (\$i=\$year;\$i>=0;\$i-=1) {
\$npv = (\$values[\$i] + \$npv) / (1 + \$rate);
}

Actually, if array[0] is the capital outlay, shouldn't you run through starting at 0 and going to \$year?
0

Author Commented:
I'm sorry this should have been worth 500 points...
0

Commented:
0

Author Commented:
That was no help. Unless I'm missing somthing... Did you look at that page?
0

Commented:
In your code is \$rate 8.15 or .0815? It needs to be .0815; if it isn't use \$rate/100.
Also, you should not be dividing by (1+\$rate) you should multiply by (1-\$rate).
If I understand the question correctly, that should be all you need to get it working right.
0

Commented:
Scratch that second part. The division is fine. What is your code doing that you think it shouldn't?
0

Author Commented:
I'm noting getting the same figures that i do when using excel's internal NPV function.
0

Commented:
Er... That last line might not make sense. I don't know NPV that well, I'm just good at figuring formulas out. Doing it the way I suggested matched Excel perfectly.
0

Author Commented:
Thanks!
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.