Hallo Rolf,
danke fürs 'drauf einlassen'.
Ich verstehe nicht, warum Du das tun willst. Ich verstehe auch nicht, warum Du $i als Index für das Array nimmst. Wenn Du pro $id Werte aufsummieren willst, müsste dann nicht $id der Index sein? $i scheint mir völlig unerheblich für die Summierung. Zumindest dann, wenn ich dein Beispiel anschaue.
Ja, da hatte ich einen Fehler drin.
Habe ich auch erst vorhin gemerkt.
Die innere Schleife war falsch. Ich habe sie dann durch ein paar Einzelaufrufe ersetzt, erst danach machte $i wieder Sinn, weil ich durch die Einzelaufrufe mehrfach dasselbe $i verwenden konnte und auch sollte.
Mit der Zusatzvariable meine ich das so:
function test($id, $i, $betrag) { static $currentId = null; static $foo; // braucht keinen Init, denn: if ($id != $currentId) { // dies passiert auch beim ersten Aufruf! $foo = []; // "Zurücksetzen" $currentId = $id; } // tu, was mit $foo und $betrag auch immer zu tun ist }
Ok, das sind die entscheidenden Zeilen.
$currentID muss static sein, darauf war ich nicht gekommen.
Und ich wußte nicht, wie man $foo zurücksetzt.
Ich habe das nun so für meinen Originalcode umgesetzt und er macht nun genau das, was ich erwartet hatte.
Aber ich stochere hier im Nebel. Weil Du ein Datenbeispiel zeigst und Code, der dazu nicht passt, und nicht formal beschreibst, was zu tun ist, mit welchen Daten zu arbeiten ist und wie diese Daten strukturiert sind (inbesondere die Frage nach der Sortiertheit der $id Werte). Das Aufschreiben einer genauen Spezifikation dessen, was zu tun ist, ohne Rücksicht auf PHP, könnte Dir bereits deutlich machen, wie Du programmieren musst.
Ich verstehe.
Das ist für einen Helfer besonders unglücklich, wenn er nicht nur den Hintergrund nicht kennt, sondern das Hilfskonstrukt auch noch einen Logikfehler enthält. Umso erstaunlicher, dass Du ich so gut im "Nebel" zurecht gefunden hast.
Und umso größerer Dank, dass Du Dich soweit auf meinen Vorschlag eingelassen hast, dass ich mit Deiner Hilfe die Lösung für mein Problem umsetzen konnte.
Muss auch nicht immer so sein, versprochen. Aber diesmal gings tatsächlich nicht anders. Beim nächsten mal lass ich mich dann auf Deine/Eure Vorgehensweise ein.
Diesmal aber hat es mir so viel weiter geholfen, weil ich ehrlich nicht darauf gekommen bin, wie ich abfrage, ob sich $id geändert hat und nicht auf static $currentID gekommen bin. Deshalb finde ich das jetzt besser als eine andere Lösung, die diese Frage einfach umgangen wäre.
Gregor