Avatar billede poulchristian Juniormester
19. juni 2019 - 02:34 Der er 2 kommentarer

Gemme sidste udtræk af array som variabel

Hej,

Jeg har følgende foreach array som udskriver et givet antal måneder:

foreach ($period as $dt) {
$month[] = $dt -> format("Y-m");
}

Jeg har brug for at udtrække den sidste måned, hvilket er nemt med end($month), og gemme dette udtræk som en ny variabel. Men: jeg skal også bruge alle tilhørende variabler fra denne sidste måned, end($month) giver jo blot måneden alene.

Her en hele koden:

$Number_of_Terms = count($month);
$Monthly_Term = $Number_of_Terms;

$time = 1 / 12;
for ($i = 0; $i < $Monthly_Term; $i++) {

$Compound_Total = $Inception_Month_Total * $row['Interest_Rate'] / 100 * $time;
$Inception_Month_Total += $Compound_Total;

echo "<span style=\"display: inline-block; width: 30px\">" . $month[$i] . "</span> <span style=\"display: inline-block; text-align: right; width: 150px\">$" . number_format($Compound_Total, 2) . "</span> <span style=\"display: inline-block; text-align: right; width: 150px\">$" . number_format($Inception_Month_Total, 2) . "</span> <span style=\"display: inline-block; text-align: right; width: 150px\">$" . number_format($Inception_Month_Total - $Principal_Home_Currency, 2) . "</span><br>\n";
}

Koden virker som den skal hertil, men jeg er faktisk helt på bar bund, hvordan man gør dette... jeg havde forestillet mig, and man skulle angive en ny $key, så som:

foreach($month as $key => $Compound_Total);

...men det virker ikke. Jeg håber, nogen lige kan give et skub i den rigtige retning. På forhånd tak for hjælpen.
Avatar billede Rune1983 Ekspert
19. juni 2019 - 07:35 #1
Er lidt i tvivl om hvad det er du mener.
Men som jeg forstår det ønsker du variablerne vist/gemt efter din forloop.

Du må have en while loop med data fra database.

While
{
Så du skal vel bare inden forloop nulstil dine variabler
$Compound_Total = 0
$Inception_Month_Total = 0

Udfør din forloop
Forloop{

}

Echo dine variabler igen
$Compound_Total
$Inception_Month_Total
}

Håber det giver mening og at jeg har forstået dit problem korrekt.
Avatar billede poulchristian Juniormester
20. juni 2019 - 18:35 #2
Hej igen,

Tak for dit svar. Jeg prøver lige at beskrive, hvad jeg har brug for, for det kan godt være, min beskrivelse ikke var den bedste.

Udtrækket fra databasen er et beløb (lån) og to datoer, og mit array laver en fortløbende beregning (af lånerenter) mellem disse to datoer. Beregningen sker hver måned (baseret på de to datoer), og første måneds beregning danner udgangspunktet for næste måneds beregning (renters rente). Alt dette fungerer fint.

Jeg har brug for at gemme den allersidste beregning. Her er, hvad jeg har på nuværende tidspunkt:

$interval = DateInterval :: createFromDateString('1 month');
$period = new DatePeriod($start, $interval, $end);

foreach ($period as $dt) {
$month[] = $dt -> format("Y-m");
}

// -> THIS CALCULATES AND DISPLAYS THE FOLLOWING MONTHS:
$Number_of_Terms = count($month);
$Monthly_Term = $Number_of_Terms;

// -> THIS CALCULATES AND LOOPS TROUGH THE TERMS (MONTHLY).
$time = 1 / 12;
for ($i = 0; $i < $Monthly_Term; $i++) {

// -> THIS CALCULATES THE ONGOING INTEREST (P * r * t).
$Ongoing_Monthly_Interest = $Inception_Month_Total * $row['Interest_Rate'] / 100 * $time;

// -> THIS CALCULATES NEXT MONTH'S NEW TOTAL.
$Inception_Month_Total += $Ongoing_Monthly_Interest;

Men, men, men: det er jo så lige det, at den kan jeg ikke finde ud af... at få den sidste måned med end($month) er jo fint nok, men den tilhørende beregning ($Ongoing_Monthly_Interest) ved jeg ikke, hvordan jeg skal få gemt.

Jeg håber, dette giver lidt mere mening.

Tak på forhånd.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester