Ne pas ajouter des valeurs qui ont été formatées à l'aide number_format(), sinon ils pourraient bien contenir, comme séparateur de mille ... ils sont traités comme des chaînes plutôt que des flotteurs .
En supposant que $ en espèces, carte $ et vérifier $ sont des tableaux:
$cash = array_sum($cash);
$card = array_sum($card);
$check = array_sum($check);
$total = number_format($cash + $card + $check, 2);
$cash = number_format($cash, 2);
$card = number_format($card, 2);
$check = number_format($check, 2);
Est-ce que la mise en forme après le calcul
EDIT
Utilisez str_replace() plutôt que preg_replace() pour enlever tout $, alors c'est une addition simple plutôt que de devoir faire le array_sum(), bien que je ne sois pas sûr d'où $ est susceptible de provenir si les valeurs sont DECIMAL 10,7 de la base de données
$cash = (float) str_replace(array('$',','), '', $cash);
$card = (float) str_replace(array('$',','), '', $card);
$check = (float) str_replace(array('$',','), '', $check);
$total = number_format($cash + $card + $check, 2);
$cash = number_format($cash, 2);
$card = number_format($card, 2);
$check = number_format($check, 2);
(suppose que, est votre séparateur de milliers dans les valeurs de chaîne pour $ en espèces, carte $ et vérifier $ lorsque vous faites la str_replace()
EDIT 2
Pour convertir le $ tableau en espèces à une somme de ses valeurs, après avoir nettoyé tout $ ou, dans les cordes:
$cash = array (0 => '$1729.13', 1 => '0.00', 2 => '$1,234.56');
function cleanArrayValues($value) {
return (float) str_replace(array('$',','), '', $value);
}
$cash = array_sum(array_map('cleanArrayValues',$cash));
J'ai ajouté une valeur supplémentaire dans le tableau de trésorerie de $ juste pour démontrer.
Vous aurez besoin de filtrer la carte $ et les chèques $ de la même manière, en utilisant la fonction de rappel cleanArrayValues () (si elles sont tous les tableaux)
De quel type de données sont-ils dans la base de données? –
Le total est de 1 740,01, au cas où vous vous poseriez la question. Si vous avez besoin de plus, il serait agréable de voir le code que vous utilisez, donc nous pouvons vous aider à le réparer. –
duplication possible de [PHP Math Precision] (http://stackoverflow.com/questions/3726721/php-math-precision), [Arrondir en PHP] (http://stackoverflow.com/questions/3512663/rounding-in -php), [Comment résoudre ce problème en PHP?] (http://stackoverflow.com/questions/1995226/how-to-fix-this-problem-in-php) – outis