0

私はこのスクリプトを持っています...

//initial value

$fund = 10;
$rebate = 0.01; // constant 1 percent
$maturity = 30; //days

echo '<ul>';
echo '<li>Day1 fund: $' . $fund . '</li>';

//day1 value
$fund = incfund($fund); //should return $10.10
echo '<li>Day2 fund: $' . $fund . '</li>';

//day2 value
$fund = incfund($fund); //should return $10.20
echo '<li>Day3 fund: $' . $fund . '</li>';

//day3 value
$fund = incfund($fund); //should return $10.30
echo '<li>Day4 fund: $' . $fund . '</li>';

echo '</ul>';
//continue increasing the fund value daily until day 30...


//function to increase $fund

function incfund($x){
for($i = 0; $i<=$maturity; $i++){
$newfund = $x + $rebate;
$fund = $newfund;
return $fund;
}
}

現在、スクリプトを実行すると、次のように出力されます。

Day1 fund: $10
Day2 fund: $10
Day3 fund: $10
Day4 fund: $10

私が本当に出力したいときは:

Day1 fund: $10.10
Day2 fund: $10.20
Day3 fund: $10.30
Day4 fund: $10.40
...
...
Day30 fund: $13.00

基本的に、私がやりたいことは、1% のリベートを計算して元のファンドに複利計算し、満期日まで複利計算を続けることです。

やりたいことができないのは何が問題なのですか?

4

6 に答える 6

5

コードを見てください

function incfund($x){
    for($i = 0; $i<=$maturity; $i++){
        $newfund = $x + $rebate;
        $fund = $newfund;
        return $fund;
    }
}

それは本当に何をしますか

function incfund($x){
    return $x+$rebate;
}

何を変えるべきか

function incfund($x){
    global $rebate;
    return $x+$rebate;
}

また

function incfund($x, $rebate){
    return $x+$rebate;
}

ビューレイヤーを変更します

for ($i = 1; $i <= $maturity; $i++, $fund = incfund($fund)) {
    echo '<li>Day'.$i.' fund: $' . $fund . '</li>';
}

しかし、機能を説明したように、すべてのコードは次のようになります

//initial value

$fund = 10;
$rebate_weekdays = 0.01; // constant 1 percent
$rebate_weekend = 0.02; // constant 1 percent
$maturity = 30; //days

echo '<ul>';

// show fund and continue increasing the fund value daily until day 30...
for ($i = 1; $i <= $maturity; $i++) {
    $rebate = (is_it_weekend($i)) ? $rebate_weekend: $rebate_weekdays;
    $curfund = incfund($fund, $i, $rebate);
    echo '<li>Day'.$i.' fund: $' . $curfund . '</li>';
}

echo '</ul>';

//function to calculate current $fund    
function incfund($fund, $x, $rebate){
    return $fund * (1 + $x * $rebate);
}

その日を確認する方法を見つけることができます。http://php.net/mktimehttp://php.net/dateを使用するだけです

于 2012-12-04T09:11:24.063 に答える
3

$rebate変数を$maturity関数パラメーターとして渡します。

function incfund($x,$rebate,$maturity){
...
}

呼び出し機能:

incfund($fund,$rebate,$maturity);
于 2012-12-04T09:05:42.267 に答える
1

さらに、小数点以下2桁のようなフォーマットが必要な場合は、number_format($number,2)

GBDの回答に加えて

于 2012-12-04T09:11:38.993 に答える
0

あなたが本当にこのようにするつもりなら、あなたが望むことをするために方法を変える方法はここにあります

function incfund($x){
 global $maturity;
 global $fund;
 global $rebate;
  for($i = 0; $i<=$maturity; $i++){
     $newfund = $x+($x*$rebate);
     $newfund=number_format((float)$newfund, 2, '.', '');
     $fund = $newfund;
    return $fund;
     }
  }
于 2012-12-04T09:23:32.980 に答える
0

これは私にとってはうまくいき、あなたが望むものを出力します。ループ内で 1 日を作成する方が簡単であることがわかりました。

<?php

//function to increase $fund

function incfund(){
        $fund = 10;
        $rebate = 1; // constant 1 percent
        $maturity = 30; //days
        $html = '';
        $interest = ($fund / 100) * $rebate;
        for($i = 0; $i<=$maturity; $i++){
            $realInterest = $interest * $i;
            $html .= '<li>Day'.$i.' fund: $' . number_format($fund+$realInterest ,2) . '</li>';
        }
    echo $html;
}

echo incfund();
?>


Day0 fund: $10.00
Day1 fund: $10.10
Day2 fund: $10.20
Day3 fund: $10.30
Day4 fund: $10.40
Day5 fund: $10.50
Day6 fund: $10.60
Day7 fund: $10.70
Day8 fund: $10.80
Day9 fund: $10.90
Day10 fund: $11.00
Day11 fund: $11.10
Day12 fund: $11.20
Day13 fund: $11.30
Day14 fund: $11.40
Day15 fund: $11.50
Day16 fund: $11.60
Day17 fund: $11.70
Day18 fund: $11.80
Day19 fund: $11.90
Day20 fund: $12.00
Day21 fund: $12.10
Day22 fund: $12.20
Day23 fund: $12.30
Day24 fund: $12.40
Day25 fund: $12.50
Day26 fund: $12.60
Day27 fund: $12.70
Day28 fund: $12.80
Day29 fund: $12.90
Day30 fund: $13.00
于 2012-12-04T09:32:45.097 に答える
-2

OK、基礎資金からの結果を計算するので、この値を保持する必要があります。

これはそれを行う必要があります:

// initial
$fund = 10;
$rebate = 0.01; // constant 1 percent
$maturity = 30; //days

incfunds($fund, $rebate, $maturity);

function incfunds($fund, $rebate, $maturity) {
    echo "<ul>";
    for($i = 0; $i < $maturity; $i++) {
        echo "<li>Day{$i+1} fund:".($fund + (($fund/100) * $i*$rebate))."</li>";
    }
    echo "</ul>";
}

それで全部です。

于 2012-12-04T09:18:02.283 に答える