Ik probeer een vooruitzicht van (dag 0 telt niet mee, maar staat er wel) 10 dagen te maken van een bank op een spel.
Rente is 2%, start kapitaal is:
45081

Ik heb het dus zo bedacht:

<?php	
	
	$bank = 45081;
	$numArray = array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
	echo "Bank:<br /> ";
	foreach($numArray as $i) {

		
		if($i == 0 || $i == 1) {
		$oldbank = $bank;
		} else {
		$oldbank = $bank*(1.02^($i-1));
		}
		echo "&nbsp;Day ".$i."<br />";
		echo "&nbsp;&nbsp;&nbsp;&nbsp;Old Bank Amount: ".$oldbank."<br />";
		echo "&nbsp;&nbsp;&nbsp;&nbsp;New Bank Amount: ".$bank*(1.02^$i);
		echo "<br /><br />";

	}

?>


Maar nu loopt het niet goed.

Resultaat:

Bank:
 Day 0
    Old Bank Amount: 45081
    New Bank Amount: 45081

 Day 1
    Old Bank Amount: 45081
    New Bank Amount: 0

 Day 2
    Old Bank Amount: 0
    New Bank Amount: 135243

 Day 3
    Old Bank Amount: 135243
    New Bank Amount: 90162

 Day 4
    Old Bank Amount: 90162
    New Bank Amount: 225405

 Day 5
    Old Bank Amount: 225405
    New Bank Amount: 180324

 Day 6
    Old Bank Amount: 180324
    New Bank Amount: 315567

 Day 7
    Old Bank Amount: 315567
    New Bank Amount: 270486

 Day 8
    Old Bank Amount: 270486
    New Bank Amount: 405729

 Day 9
    Old Bank Amount: 405729
    New Bank Amount: 360648

 Day 10
    Old Bank Amount: 360648
    New Bank Amount: 495891
<?php
for($i = 1; $i <= $numarray.length; $i++)
{
old bank amount = niew bank amount;
nieuw bank amount = nieuw bank amount * 1.02;
//en de echo'tje (numarray[$i] geeft dan meteen dag 1 weer)
}
?>
Ah, kijk. Nu werkt ie!


<?php	
	
	$newbank = 450081;
	
	$numArray = array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
	echo "Bank:<br /> ";
	foreach($numArray as $i) {

		$oldbank = $newbank;
		$newbank = $oldbank * 1.02;
		if($i == 0) {
		$newbank = $oldbank;
		}

		echo "&nbsp;Day ".$i."<br />";
		echo "&nbsp;&nbsp;&nbsp;&nbsp;Old Bank Amount: ".$oldbank."<br />";
		echo "&nbsp;&nbsp;&nbsp;&nbsp;New Bank Amount: ".$newbank;
		echo "<br /><br />";

	}

?>
Zo kan t korter en het werkt: ^ kent php niet, gebruik pow()

EDIT: Haha allemaal tegelijk
Pim schreef op 19.01.2010 14:34
Zo kan t korter en het werkt: ^ kent php niet, gebruik pow()

EDIT: Haha allemaal tegelijk
<?php

$bank = 45081;
echo "Bank:<br /> ";
foreach($i = 0; $i <= 10; $i++) {
echo "&nbsp;Day ".$i."<br />";
echo "&nbsp;&nbsp;&nbsp;&nbsp;";
if($i == 0)
echo "Old";
else
echo "New";
echo "Bank Amount: ". $bank * pow(1.02, $i) ."<br />";
echo "&nbsp;&nbsp;&nbsp;&nbsp;New Bank Amount: ".$bank;
}

?>

pim, het is netter je if() te nesten met {} ook al heb je maar 1 uitvoer. en je foreach is dubbelop,
foreach($numarray as $i){}
of
for($i=1;$<=$numarray;$i++){}
niet beide :P
BTW krijg je nu niet dubbel je rente??
in de forloop reken je al voor elke stap *1.02 door heh
En dan nog wat wiskunde macht basisregels:
2^0 = 1
2^1 = 2
Oftewel op dag nul is het bedrag gewoon het startbedrag.
dus is het beter de pow te gebruiken in plaats van *1.02
sorry in de haast niet aan gedacht (A)
Je hebt gelijk.
Ja, pow (een macht dus) is beter, het is een exponentiële groei.
Mijn baksel:
<?php
$iStartwaarde = 45081;
for ( $i = 0; $i <= 10; $i++ )
{
    echo 'Kapitaal op dag ' . $i . ': ' . $iStartwaarde * pow(1.02, $i) . PHP_EOL;
}
/* levert:
Kapitaal op dag 0: 45081
Kapitaal op dag 1: 45982.62
Kapitaal op dag 2: 46902.2724
Kapitaal op dag 3: 47840.317848
Kapitaal op dag 4: 48797.124205
Kapitaal op dag 5: 49773.0666891
Kapitaal op dag 6: 50768.5280228
Kapitaal op dag 7: 51783.8985833
Kapitaal op dag 8: 52819.576555
Kapitaal op dag 9: 53875.9680861
Kapitaal op dag 10: 54953.4874478
?>

[php]sprintf[/php] of [php]number_format[/php] of [php]money_format[/php] gebruiken voor het netjes presenteren van de waarden.
Ja idd, was even slordig bezig.
Toch zijn die brackets niet nodig en volgens veel referenties ook niet netter.

Anderen hebben al wat nuttigs gepost en ik heb mijn post daarom maar weggehaald.

Reageren