Avatar billede poulchristian Juniormester
14. maj 2019 - 07:19 Der er 6 kommentarer og
1 løsning

Variable i Array

Hej!

Jeg har script, der beregner månederne mellem to datoer, og som virker som forventet:

    foreach ($period as $dt) {
    $Months_Term = $dt->format("Y-m");
    echo $Months_Term;

Jeg vil gerne indsætte disse måneder i et array i et tilhørende script:

    $month = array('2019-05','2019-06','2019-07','2019-08');

I stedet for at udskrive via echo, vil jeg gerne anvende månederne i et array, hvor jeg senere kan bruge $month[$i], noget i denne retning:

    $month = array($Months_Term);

Det eneste, der sker er, at jeg får udskrevet hele array'et som tekst via echo (ikke overraskende), men jeg kan ikke finde en løsning, hvor array'et bliver brugt korrekt til beregning og echo af $month[$i].

Er der nogen herinde, som kan hjælpe mig videre? På forhånd ak.
Avatar billede Slater Ekspert
14. maj 2019 - 07:31 #1
Jeg forstår ikke helt spørgsmålet.

echo kan ikke udskrive et array.

Hvis du gør som du har beskrevet her, med $month = array(...), så vil du lige præcis kunne tilgå de enkelte måneder i det med $month[$i]

Hvad er det problem du har? Vis evt noget kode.
Avatar billede Rune1983 Ekspert
14. maj 2019 - 07:37 #2
Prøv kør dette script. Er det det du mener?

$start    = new DateTime('2010-12-02');
$start->modify('first day of this month');
$end      = new DateTime('2012-05-06');
$end->modify('first day of next month');
$interval = DateInterval::createFromDateString('1 month');
$period  = new DatePeriod($start, $interval, $end);

$ArrayMonthBetweenDates = array();
foreach ($period as $dt) {
    echo $dt->format("Y-m") . "<br />";
    array_push($ArrayMonthBetweenDates,$dt->format("Y-m"));
}

print "<br /><br />";
print_r($ArrayMonthBetweenDates);
Avatar billede poulchristian Juniormester
14. maj 2019 - 17:35 #3
Hej Slater og Rune1983, tak for jeres hurtige svar.

Min første kode skal finde nogle måneder (Rune1983, det er netop dit forslag, som jeg også har brugt). De fundne måneder skal bruges til renteberegning på lån.

Koden til renteberegning ser således ud og virker fint:

$month = array('2019-06', '2019-07', '2019-08', '2019-09');
$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 $month[$i] number_format($Compound_Total, 2) number_format($Inception_Month_Total, 2)  number_format($Inception_Month_Total - $Principal_Home_Currency, 2) \n";
}

Jeg vil gerne kunne erstatte $month = array('2019-06', ... '2019-09'); med beregningen af måneder fra denne kode:

$start = new DateTime($row['Date']);
$start -> modify('first day of next month');
$end = new DateTime('2019-09-30');
$end->modify('first day of next month');
$interval = DateInterval::createFromDateString('1 month');
$period = new DatePeriod($start, $interval, $end);

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

Jeg er godt med på, at man ikke kan echo i et array, så hvad skal jeg gøre for at anvende beregningen af måneder til beregningen af renter? På forhånd tak for jeres hjælp.
Avatar billede Slater Ekspert
15. maj 2019 - 12:26 #4
#3: Bare lige for god ordens skyld, så er det ikke for at ignorere dig at jeg ikke har meldt tilbage, men fordi jeg stadig ikke forstår spørgsmålet. Beklager meget.
Jeg er også elendig til lån og renter, så det kan have noget med det at gøre, men jeg er da god nok til PHP til at jeg er sikker på at kunne hjælpe dig med det, hvis du eventuelt kan forklare det simplere.
Avatar billede poulchristian Juniormester
15. maj 2019 - 16:51 #5
Hi Slater, det er bare OK; jeg er helt med på, at min forklaring ikke er så enkel, som den kunne være. Jeg har to stumper kode, som jeg skal have kombineret:

Kode A - Beregner måneder
Kode B - Beregner renter

... der er som sådan ligegyldigt, hvad koderne gør, jeg skal "bare" have dem sat sammen. De to koder overlapper ved, at resultatet from kode A skal bruges i et array i kode B (angivet i fed skrift i min forrige forklaring).

Hvis det var muligt (hvilket det ikke er) at echo en variable fra kode A inden i et array i Kode B (så som $month = array(echo $Months_Term);), ville alt være løst. Når man nu ikke kan det, hvad gør man så?

Hver kode fungere fint hver for sig, men jeg kan ikke finde ud af sætte dem sammen.

Her er et midlertidigt skærmbillede, som viser hvordan det endelige resultat skal se ud:
https://www.dropbox.com/s/zi6oygnx89y9w6a/calcul8.jpg?dl=0

Håber, dette hjælper lidt; ellers siger du bare til.
Avatar billede Slater Ekspert
16. maj 2019 - 09:30 #6
Okay, så du vil bare gerne tilføje resultaterne af din $dt->format() til month-arrayet?

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

- vil gøre det. Syntaksen "[]" efter en array-variabel betyder at den skal oprette et nyt index og lægge det til. Du kan også bruge array_push() til det samme.

Er det det du er i tvivl om, eller har jeg igen misforstået?
Avatar billede poulchristian Juniormester
17. maj 2019 - 00:47 #7
Hi Slater, og jeg som troede, jeg havde prøvet alle løsninger :-) Tusind tak for hjælpen; alt virker perfekt!
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

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