PHP函数 - 函数的输出是另一个函数的输入

时间:2016-01-27 06:32:08

标签: php

我有以下功能,其中给出了某些输入,然后给出了4个输出: -

function rsiNext($dailyGainAvgPrev, $dailyLossAvgPrev,$cpDailyNext){
    if($cpDailyNext > 0){
        $dailyGainAvgNext = (($dailyGainAvgPrev * 13) + $cpDailyNext)/14;
    }else{
        $dailyGainAvgNext = (($dailyGainAvgPrev * 13) + 0)/14;
    }

    if($cpDailyNext < 0){
        $dailyLossAvgNext = (($dailyLossAvgPrev*13) + abs($cpDailyNext))/14;
    }else{
        $dailyLossAvgNext = (($dailyLossAvgPrev*13) + abs(0))/14;
    }
    $relStrNext = $dailyGainAvgNext/$dailyLossAvgNext;
    if($dailyLossAvgNext == 0){
        $relStrIndNext = 100;
    }else{
        $relStrIndNext = 100-(100/(1+$relStrNext));
    }
    return array($dailyGainAvgNext, $dailyLossAvgNext, $relStrNext, $relStrIndNext);
}

我使用以下代码行输出值:

//Get value for day 15
list($dailyGainAvg02, $dailyLossAvg02, $relStr02, $relStrInd02) = rsiNext($averageGains14, $averageLosses14, $priceDifferences[15]);
echo '<tr><td>'.$dailyGainAvg02.'</td><td>'.$dailyLossAvg02.'</td><td>'.$relStr02.'</td><td>'.$relStrInd02.'</td></tr>';

现在,当我想要第16天的值时,我使用以下代码行:

//Get value for day 16
list($dailyGainAvg03, $dailyLossAvg03, $relStr03, $relStrInd03) = rsiNext($dailyGainAvg02, $dailyLossAvg02, $priceDifferences[16]);
echo '<tr><td>'.$dailyGainAvg03.'</td><td>'.$dailyLossAvg03.'</td><td>'.$relStr03.'</td><td>'.$relStrInd03.'</td></tr>';

第15天的输出是第16天的输入,第16天的输出是第17天的输入。第17天的输出是第18天的输入,等等......

我需要重复列表100天。如何在不再重复list行100天的情况下进行此操作?

谢谢。

1 个答案:

答案 0 :(得分:1)

假设您已完全填充$priceDifferences数组,则应执行以下操作:

$cur_dailyGainAvg = 0; // you need to initialize this value appropriately
$cur_dailyLossAvg = 0; // you need to initialize this value appropriately

for ($idx = 1; $idx <= 100; $idx++) {
  list($new_dailyGainAvg, $new_dailyLossAvg, $new_relStr, $new_relStrInd) = rsiNext($cur_dailyGainAvg, $cur_dailyLossAvg, $priceDifferences[$idx])

  // print
  echo '<tr><td>'.$new_dailyGainAvg.'</td><td>'.$new_dailyLossAvg.'</td><td>'.$new_relStr.'</td><td>'.$new_relStrInd.'</td></tr>';

  // shift the new values onto the current, and repeat the calculation
  $cur_dailyGainAvg = $new_dailyGainAvg;
  $cur_dailyLossAvg = $new_dailyLossAvg;
} 

基本上区分您输入功能的“当前”值和出现的“新”值,然后将新“转移”到当前值并重复。

您可能需要检查循环的边界。