Moin!
ich möchte einfach die Summe aus einem Array wiedergeben was wie folgt aussieht:
Array
(
[0] => Array
(
[product_price] => 58.99
)[1] => Array
(
[product_price] => 146.00
))
Ich speichere die Daten per while-Schleife in dem Array
Ein echo array_sum($preis); gibt mir nur den Wert "0" zurück.
Da array_sum() nur mit eindimensionalen Arrays arbeiten kann, wird das nicht funktionieren.
Aber es gibt eine allgemeine Funktion, die beliebige Arrays nach beliebigen Regeln auf einen Wert eindampfen kann: array_reduce().
Die reduce-Funktion muss zwei beliebige Array-Elemente nehmen, in die Unter-Arrays gehen, und die Summe der Preise zurückgeben.
In diesem Zusammenhang sei auch unbedingt auf array_map() hingewiesen. Mit dieser Funktion und array_sum() kann man's auch lösen.
Die map-Funktion muss ein Array-Element des Hauptarrays nehmen und den Preis aus dem Unter-Array zurückgeben. Das Funktionsergebnis von array_map() wird in array_sum() eingespeist.
Beide Funktionen zusammen machen das, was seit Google als Map-Reduce bekannt ist. Sollte man sich unbedingt mal mit beschäftigen. Insbesondere kann man seit PHP 5.3 die Callback-Funktionen direkt als Lambda-Funktionen angeben, muss sie also nicht irgendwo anders als Funktion definieren.
- Sven Rautenberg