Rolf B: php-Versuchsaufbau schlägt fehl

Beitrag lesen

Hallo Gregor,

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?

Intern, weil eine static-Variable in test() von außen nicht zugänglich ist. Aber dieses Thema hat sich soeben erledigt weil ich deine Absichten ganz falsch verstanden habe.

test($id,$i,'100');

Du solltest Zahlen als Zahl und nicht als Zeichenkette speichern. Wo kommt im echten Leben diese '100' her? Wenn sie aus einer DB oder einem $_GET/$_POST Eintrag kommt, wäre der Aufruf von intval() oder floatval() nützlich, um einen Zahlenwert zu erhalten.

Ich brauche

Betrag: 1/0: 100
Betrag: 1/1: 200
...
Betrag: 1/9: 1000
Betrag: 1/10: 100
Betrag: 2/0: 200
Betrag: 2/1: 300

Ich nehme an, du bist bei 1/10 verrutscht und willst da 1100 haben. Ab 2/0 sollte es dann wieder mit 100 losgehen. Gelle?

In dem Fall musst Du in der test-Funktion die $id als Index verwenden. $i brauchst Du dort gar nicht mehr und mein Klassenbeispiel ist auch nicht für Dich passend.

Ein "Reset" des Arrays ist dann auch nicht nötig. Du addierst die Beträge unter ihrer jeweiligen ID auf und fertig. Oder ich verstehe Dich immer noch falsch.

Wenn Du die Beträge so erhältst, wie es deine Testschleifen suggerieren - also so, dass alle Beträge zu einer $id nacheinander kommen - dann brauchst Du eigentlich gar kein Array. Dann reicht

for ($id=1; $id<=5; $id++) {
   $summe = 0;
   for ($i=0; $id<=11; $i++) {
      $summe += 100;
   }
   echo "Summe für $id ist $summe<br>";
}

Rolf

--
sumpsi - posui - obstruxi