1unitedpower: Daten vor einer foreach ausgeben?

Beitrag lesen

Die Lösung steht doch schon längst in deinem Code: Mach es vorneweg und speichere es in einem eigenen Eintrag der $group.

+1

Du müsstest in deinem array_map Callback für die Summenberechnung nur den array_column/array_sum durch eine ordentliche Schleife über die Einträge ersetzen, dann kannst Du Minima, Maxima und Summen nach Herzenzlist bilden.

Es muss nicht unbedingt eine Schleife sein. Das wäre der prozedurale Ansatz:

$minimum = INF;
$maximum = -INF;
$sum = 0;
foreach ($array as $value) {
    $minimum = min($minimum, $value);
    $maximum = max($maximum, $value);
    $sum = $sum + $value;
}

Das der funktionale:

list($min, $max, $sum) = array_reduce($array, function ($accumulator, $value) {
    $min = min($accumulator[0], $value);
    $max = max($accumulator[1], $value);
    $sum = $accumulator[2] + $value;
    return [$min, $max, $sum];
}, [INF, -INF, 0]);

Persönlich finde ich die zweite Lösung schöner, aber das ist Geschmackssache. Falls die Möglichkeit besteht, würde ich aber auch die Berechnungen, wie von ursus vorgeschlagen, in der Datenbank durchführen.