Witam,
Posiadam kilkanaście zmiennych w tablicach jako dane, z których mam powyliczać inne dane.
Przykładem takiej zmiennej jest zmienna zawierająca przychód osiągnięty w danym miejscu ($b) i danym dniu ($y,$m,$d).

$zestawienie['przychod'][$b][$y][$m][$d];

Na rzecz zestawienia potrzebuje także gotowe wartości tj. suma przychodów dziennych.

$zestawienie['przychod_dzienny'][$y][$m][$d] = $zestawienie['przychod'][0][$y][$m][$d] + $zestawienie['przychod'][1][$y][$m][$d] + $zestawienie['przychod'][2][$y][$m][$d] + $zestawienie['przychod'][3][$y][$m][$d] + $zestawienie['przychod'][4][$y][$m][$d] + $zestawienie['przychod'][5][$y][$m][$d];

Bądź suma przychód z danego dnia, dla kilku miejsc.

$zestawienie['przychod']['krakow'][$y][$m][$d] = $zestawienie['przychod'][1][$y][$m][$d] + $zestawienie['przychod'][2][$y][$m][$d];

Potrzebuje również sumę przychodów dla danego miejsca z całego miesiąca:

// sumuje się to w pętli
$zestawienie['przychod_miesieczny'][$b][$y][$m] += $zestawienie['przychod'][$b][$y][$m][$d];	

Potrzebuje również sumę przychodów miesięcznych dla wszyskich miejsc w podsumowaniu miesiąca.

$zestawienie['suma_przychodow_miesiecznych'][$y][$m] += $zestawienie['przychod_dzienny'][$y][$m][$d];

Można to też policzyć sumując:

$zestawienie['przychod_miesieczny'][0][$y][$m] +  $zestawienie['przychod_miesieczny'][1][$y][$m]

itd.
Ale ten sposób pierwszy z wykorzystaniem przychodu dziennego mniej miejsca zajmuje.

Nie będe jeszcze pisał, że chce zbudować podsumowanie roczne.
Strasznie mi się nie podoba, że policzenie takich pierdół dla jednej zmiennej to kilkadziesiąt linijek kodu.
Mam jeszcze inne zmienne podstawowe. marże, rotacje, stany magazynowe. Naprawdę dodanie nowych parametrów jest pracochłonne, a przede wszystkim wymaga dużo klikania (kopiuj/wklej).

Jak najlepiej rozwiązać ten problem?

  1. Czy nie można by napisać jakiejś uniwersalnej funkcji, która zgrabnie by mi sumowała te dane według wybranego klucza?
    Zamiast:
$zestawienie['przychod_dzienny'][$y][$m][$d] = $zestawienie['przychod'][0][$y][$m][$d] + $zestawienie['przychod'][1][$y][$m][$d] + $zestawienie['przychod'][2][$y][$m][$d] + $zestawienie['przychod'][3][$y][$m][$d] + $zestawienie['przychod'][4][$y][$m][$d] + $zestawienie['przychod'][5][$y][$m][$d];
$zestawienie['przychod_dzienny'][$y][$m][$d] = sumuj('przychod', 6);

Z drugiej strony czasem chce zsumować wybrane przychody nie od zera, czyli jakoś:

$zestawienie['przychod_dzienny']['krakow'][$y][$m][$d] = sumuj('przychod', 2, 1);
//czyli sumuj dwa przychody zaczynajac od 1-szego miejsca.
  1. Czy zamiast stosowania nazw dla tablicy asocjacyjnej przychod, przychod_miesieczny nie lepiej było by wyrazić to w sposób:
$zestawienie['przychod'][0][$b][$y][$m][$d] - przychod z danego dnia
$zestawienie['przychod'][1][?][$y][$m][$d] - suma przychodow z wszystkich miejsc, danego dnia.
$zestawienie['przychod'][2][$b][$y][$m][?] - przychod miesieczny z danego miejsca
$zestawienie['przychod'][3][?][$y][$m][?] - przychod miesieczny z wszystkich miejsc
$zestawienie['przychod'][4][?][$y][?][?] - przychod roczny z wszystkich miejsc
//itd.

Gdzie informacja o tym co to za przychód była by zawarta w np. pierwszym kluczu.

Jednak nie wiem jak to zrobić, bo co wstawić w miejsce ? żeby całość miała sens?
Jeżeli byłoby to podsumowanie miesięczny czy roczne to siłą rzeczy nie mogę wstawić dnia.
Jeżeli to ma być podsumowanie wszystkich miejsc to nie mogę wstawić parametru $b, bo to nie miało by sensu.
Nie wiem jak to rozwiązać, proszę o pomoc, bo za jakiś czas się sam zgubię w tym kodzie.