前言
tips:如果本文对你有用,请爱心点个赞,提高排名,让这篇文章帮助更多的人。谢谢大家!比心❤~
如果解决不了,可以在文末加我微信,进群交流。
在工作中有个金额数值累加的需求,正常的循环进行计算的时候,发现值总是为1.具体代码如下:
错误代码
<?php
$total_amount = 0;
foreach ($list as &$item){
$item['num'] = $item['num'];
$item['jd_price'] = number_format($item['jd_price'],2);
$item['total_price'] = number_format($item['num'] * $item['jd_price'],2);
var_dump($item['total_price']); // echo string(8) "1,365.15"
var_dump($total_amount); // echo int(0)
$total_amount += $item['total_price'];
var_dump($total_amount); // echo int(1),此处期望值为 1,365.15
}
解决方案
使用number_format()的时候需要规避这样的错误,需要对千分位的符号进行规定,也就是传入第4个参数。
$total_amount = 0;
if(!empty($list)){
foreach ($list as &$item){
$item['num'] = $item['num'];
$item['jd_price'] = number_format($item['jd_price'],2);
$item['total_price'] = number_format($item['num'] * $item['jd_price'],2,'.','');
var_dump($item['total_price']); // string(8) "1,365.15"
var_dump($total_amount); // int(0)
$total_amount += $item['total_price'];
var_dump($total_amount); // float(1365.15)
}
}
有问题请添加个人微信:【mengyilingjian】,进群一起技术讨论。添加时请备注来意,谢谢!