Gregor: php-Versuchsaufbau schlägt fehl

Beitrag lesen

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.