Moin!
Das geht so nicht, weil array_sum() nicht weiß, was es denn addieren soll.
In deinem Fall ist es so, dass Du einen Array aus Hashes hast. array_sum kann wunderbar eindimensionale Array durchrechnen. Deinen indes nicht. Was wäre denn, wenn es nicht nur einen Preis gäbe:
Array
(
[0] => Array
(
[product_price] => 58.99
[special_price] => 49.99
)
[1] => Array
(
[product_price] => 146.00
[special_price] => 126.99
)
)
Dir kann aber geholfen werden. Damit die von mir verwendeten Variablen nicht mit Deinen kollidieren kapsele ich die Ermittlung in einer Funktion:
function getSummeVonArrayAusHashes ($ar, $sKey) {
/*
# $ar: Array aus Hashes
# $sKey: hash-Bezeichner des jeweiligen Elementes
*/
// Leere Variable für die Summe:
$sum=0;
// Für jedes Element des Arrays als hash:
foreach ($ar as $tmp) {
// Teste ob der Key überhaupt existiert:
if (isset($tmp[$sKey]) {
// addiere den Wert:
$sum += $tmp[$sKey]; // Kann auch als $sum = $sum + $tmp[$sKey] notiert werden.
} else { // Falls nicht ...
// Deine Fehlerbehandlung hier hinschreiben
return false; // Abbruch
}
}
return $sum;
}
In Deinem Fall kann es womöglich mit der funktion und dem Aufruf ...
setlocale(LC_MONETARY, 'de_DE');
$summe=getSummeVonPreisArray ($preis, 'product_price');
if (! false === $summe) { // Kann ja tatsächlich auch 0 rauskommen...
print money_format('%.2n', $summe);
} else {
// Deine Fehlerbehandlung hier hinschreiben
}
... funktionieren. Der Code kann fehlerhaft sein, er ist nicht getestet, kann insbesondere "Typos" enthalten. Die weitere Verfeinerung überlasse ich Dir.
Im Übrigen wirst Du schon bald sehen das es besser ist die Preise als ganzzahlige Cent-Beträge zu speichern, mit diesen zu rechnen und diese nur für Ausgaben in Euro "umzurechnen".
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix