Hallo Rolf,
Hallo Gregor,
die Endlosschleife kommt, weil Du die Teile 2 und 3 der for-Schleife vertauscht hast:
Hab ich gar nicht gemerkt. 🤐
Um in deiner Funktion bei einem id-Wechsel das Array zu löschen, musst Du die ID vom letzten Aufruf speichern. Ändert sie sich, weist Du [] an das Array zu.
Extern oder innerhalb der Funktion?
Und warum kommt jetzt hier nicht das raus, was ich wollte?
function test($id,$i,$betrag)
{
static $foo = [];
$foo[$i] = $foo[$i] + $betrag;
echo "Betrag: ".$id."/".$i.": ".$foo[$i]."<br>";
}
for($id = 1;$id <= 5;$id++) {
for($i = 0;$i < 11;$i++) {
test($id,$i,'100');
}
}
Ich hätte vermutet, dass der betrag pro $i um 100 Einheiten ansteigt. Er steigt aber pro $id um 100 Einheiten und bleibt innerhalb des Durchlaufes gleich.
Betrag: 1/0: 100
Betrag: 1/1: 100
Betrag: 1/2: 100
Betrag: 1/3: 100
Betrag: 1/4: 100
Betrag: 1/5: 100
Betrag: 1/6: 100
Betrag: 1/7: 100
Betrag: 1/8: 100
Betrag: 1/9: 100
Betrag: 1/10: 100
Betrag: 2/0: 200
Betrag: 2/1: 200
Betrag: 2/2: 200
Betrag: 2/3: 200
Betrag: 2/4: 200
Betrag: 2/5: 200
Betrag: 2/6: 200
Betrag: 2/7: 200
Betrag: 2/8: 200
Betrag: 2/9: 200
Betrag: 2/10: 200
Betrag: 3/0: 300
Ich brauche
Betrag: 1/0: 100
Betrag: 1/1: 200
Betrag: 1/2: 300
Betrag: 1/3: 400
Betrag: 1/4: 500
Betrag: 1/5: 600
Betrag: 1/6: 700
Betrag: 1/7: 800
Betrag: 1/8: 900
Betrag: 1/9: 1000
Betrag: 1/10: 100
Betrag: 2/0: 200
Betrag: 2/1: 300
Betrag: 2/2: 400
usw.