2012-12-04 4 views
0

나는이 스크립트가 그렇게 같이내가 스크립트를 실행하면 현재 ... PHP

//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 % 리베이트를 계산하고 원래의 펀드에 합성 한 다음 계속 혼합하는 것입니다. 성숙 날짜를 ntil.

나는 왜 내가 원하는 것을 할 수 없는지 문제가 될 수 있습니까?

+0

첫 줄을'$ fund = 10.0;'으로 변경하십시오. –

+0

당신은 항상'for' 루프의 첫번째 반복문으로 돌아갑니다. 루프가 꽤 무의미합니다. – ThiefMaster

답변

4

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

이 정말로 무엇

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

당신은 변경해야 무엇

당신이 당신의 기능을 설명

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

에 대한 6,

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

또는

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

변경보기 층은 그러나 모든 코드는 그 날 확인하는 방법

//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); 
} 

과 같아야 당신 찾을 수있다. 당신은 소수점 이하 2 개 자리와 같은 포맷하려는 경우 그것은 단순히 당신이 사용한다, 또한 http://php.net/mktime

+0

'$ curfund' 문에서';'를 잊어 버렸습니다 :) 그러나 지금까지의 대답은 가장 좋습니다! 고마워요 – anagnam

+0

네, 죄송합니다. 고정 :) stackoverflow를 즐기십시오! – Electronick

+0

현재'$ rebate'는 상수입니다. 평일에 2 %, 주말에 1 %를 원하면 어떻게해야합니까? 그렇게 할 수 있습니까? 다시 한 번 감사합니다 – anagnam

3

$rebate, $maturity 변수를 함수 매개 변수로 전달합니다.

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

전화 기능 : 코드에서

incfund($fund,$rebate,$maturity); 
+0

@GDB 이것은 Electronick의 상세한 제안이 올 때까지 가장 좋은 대답 이었지만 :) 원래 코드를 사용하여 작동합니다! 덕분에 – anagnam

1

http://php.net/date를 사용 number_format($number,2) 당신의 결과를 계산하기 때문에 그것은, GBD의 대답

-2

확인에 추가됩니다

기본 기금,이 가치를 지켜야합니다.

이 그것을 수행해야합니다 전부

// 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>"; 
} 

합니다. 정말거야 당신이 이런 식으로 할 경우

0

여기에서 u는 당신이 나를 위해 작동하고 당신이 원하는 출력

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; 
    } 
    } 
0

를하고 싶은 일을하는 방법을 변경하는 방법입니다. 루프 안에서 하루를 더 쉽게 만들 수있는 것으로 나타났습니다.

<?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 
관련 문제