Hallo Gregor,
für die Klasse ein Beispiel:
class Accumulator { private $values; function __construct() { $this->values = []; } function addAt($index, $betrag) { $this->values[$index] = ($this->values[$index] ?? 0) + $betrag; } function getAt($index) { return $this->values[$index] ?? 0; } } for ($id=1; $id<=5; $id++) { $accu = new Accumulator(); // Neuer Akkumulator für neue ID for ($i=0; $i<11; $i++) { $accu->addAt($i, $i); } print_r($accu); // Testausgabe nach der Schleife }
Dieses ?? in Zeile 13 und 17 ist der "null coalescing operator". Der Ausdruck
$a ?? $b
gibt $a zurück, wenn $a ein existierender Wert und nicht NULL ist. Andernfalls wird $b zurückgegeben - das ist bei $a==NULL der Fall und auch beim Zugriff auf ein uninitialisiertes Array-Element. Dadurch wird eine "Undefined offset" Notice beim ersten Verwenden eines Index vermieden, aus meiner Sicht ist PHP Code, der beim Ausführen eine Notice oder gar eine Warning auslöst, schludrig bis fehlerhaft.Die reset-Methode habe ich jetzt gar nicht programmiert. Es dürfte zumeist sinnvoller sein, den alten Akkumulator wegzuwerfen und einen neuen zu erzeugen, statt einen bestehenden zu Resetten.
Lieb von Dir, Rolf, dass Du Dir diese Arbeit gemacht hast.
Bringt mir nur nichts, weil es mich nicht dort abholt, wo ich stehe.
Du versuchst gerade, einem Fußballer, der den Ball nicht mal stoppen kann, einen Fallrückzieher beizubringen. Wirklich ehrenwert, aber ich fühle mich damit gerade überfordert und es frustriert mich ein bischen.
Nicht bös sein, Du hast es ja gut gemeint.
Gregor