Versuche ich mal, so umzusetzen und meld mich dann wieder zurück.
function myArrayZwischensumme($operation,$Art,$betrag,$page)
{
logge('Seite'.$page.'/ Operation: '.$operation.'/ Art: '.$Art.'/ Betrag='.$betrag,'__test.txt');
$ergebnis = 0;
static $arrPage = [];
if($operation == 'add' || $operation == 'sub') {
if($operation == 'sub') {
$betrag = $betrag * (-1);
}
$arrPage[$page] = $arrPage[$page] + $betrag;
logge('Ergebnis Seite '.$page.' :'.$arrPage[$page],'__test.txt');
return;
}
if($operation == 'get') {
logge('Get Seite '.$page.' :'.$arrPage[$page],'__test.txt');
for($i = 1;$i <= $page;$i++) {
$ergebnis = $ergebnis + $arrPage[$i];
}
logge('return Seite '.$page.' = '.$ergebnis,'__test.txt');
return number_format($ergebnis,2,".","");
}
}
23.11.2022 13:11:37.909100: Seite/ Operation: add/ Art: F/ Betrag=0
23.11.2022 13:11:37.919100: Ergebnis Seite :0
23.11.2022 13:11:37.928000: Seite/ Operation: add/ Art: A/ Betrag=0
23.11.2022 13:11:37.936500: Ergebnis Seite :0
23.11.2022 13:11:37.974000: Seite1/ Operation: add/ Art: T/ Betrag=3545
23.11.2022 13:11:37.982000: Ergebnis Seite 1 :3545
23.11.2022 13:11:37.990100: Seite1/ Operation: add/ Art: T/ Betrag=0
23.11.2022 13:11:37.998400: Ergebnis Seite 1 :3545
23.11.2022 13:11:38.006700: Seite1/ Operation: add/ Art: T/ Betrag=3455
23.11.2022 13:11:38.014900: Ergebnis Seite 1 :7000
23.11.2022 13:11:38.023800: Seite1/ Operation: get/ Art: Zwischensumme/ Betrag=0
23.11.2022 13:11:38.031900: Get Seite 1 :7000
23.11.2022 13:11:38.039900: return Seite 1 = 7000
23.11.2022 13:11:38.084700: Seite2/ Operation: sub/ Art: RGA-Zusatz/ Betrag=7000
23.11.2022 13:11:38.092500: Ergebnis Seite 2 :-7000
23.11.2022 13:11:38.146100: Endergebnis anfordern
23.11.2022 13:11:38.153400: Seite2/ Operation: get/ Art: Endsumme/ Betrag=0
23.11.2022 13:11:38.161800: Get Seite 2 :-7000
23.11.2022 13:11:38.170400: return Seite 2 = 0
Im Ausdruck passen die Werte nun, aber in den Logdaten sind ja immer noch falsche Werte drin. Wie Andreas weiter oben schon bemerkt hatte, werden mit den falschen beträgen (2 x 3545) die richtigen ergebnisse erzielt.)
Meine Vermutung außerdem:
$ergebnis = 0
ist nicht korrekt.
Jörg