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) {
$sum=0;
foreach ($ar as $tmp) {
if (isset($tmp[$sKey]) {
$sum += $tmp[$sKey];
} else {
return false;
}
}
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) {
print money_format('%.2n', $summe);
} else {
}
... 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