在这个PHP代码中调用该函数

时间:2010-08-12 14:18:31

标签: php function

代码如下,我试图调用“RATE”函数。

RATE(120,-271.09,20000)是如何在excel中使用的,使用此代码我认为它应该是相同的。

我做错了什么?我怎样才能让它发挥作用

我的代码在这里:http://pastebin.com/AbKqc8g1

3 个答案:

答案 0 :(得分:2)

您网址上发布的代码是为您的应用程序定义的类结构。因此,在调用该类中的任何函数之前,您需要创建该类的实例。例如,以下内容可帮助您入门:

$financial = new Financial;

$rate = $financial->RATE(120,-271.09,20000);

print_r($rate);

您在应用程序中如何尝试使用此功能尚不清楚,但使用上述原则您应该开始看到一些输出。

答案 1 :(得分:1)

您必须创建此类的实例,然后运行RATE方法。

<?php
    require("class.Financial.php"); 
    $fin     = new Financial(); 
    $result  = $fin->RATE(120, -271.09, 20000);
    echo $result;
?>

答案 2 :(得分:0)

@ Scott M

这是功能:

/**
 * RATE
 * 
 **/
function RATE($nper, $pmt, $pv, $fv = 0.0, $type = 0, $guess = 0.1)
{
    $rate = $guess;
    $i  = 0;
    $x0 = 0;
    $x1 = $rate;

    if (abs($rate) < FINANCIAL_ACCURACY) {
        $y = $pv * (1 + $nper * $rate) + $pmt * (1 + $rate * $type) * $nper + $fv;
    } else {
        $f = exp($nper * log(1 + $rate));
        $y = $pv * $f + $pmt * (1 / $rate + $type) * ($f - 1) + $fv;
    }
    $y0 = $pv + $pmt * $nper + $fv;
    $y1 = $pv * $f + $pmt * (1 / $rate + $type) * ($f - 1) + $fv;

    // find root by secant method
    while ((abs($y0 - $y1) > FINANCIAL_ACCURACY) && ($i < FINANCIAL_MAX_ITERATIONS))
    {
        $rate = ($y1 * $x0 - $y0 * $x1) / ($y1 - $y0);
        $x0 = $x1;
        $x1 = $rate;

        if (abs($rate) < FINANCIAL_ACCURACY) {
            $y = $pv * (1 + $nper * $rate) + $pmt * (1 + $rate * $type) * $nper + $fv;
        } else {
            $f = exp($nper * log(1 + $rate));
            $y = $pv * $f + $pmt * (1 / $rate + $type) * ($f - 1) + $fv;
        }

        $y0 = $y1;
        $y1 = $y;
        $i++;
    }
    return $rate;
}