关于number_format的一个报错

今天运营添加商品时报了一个诡异的错误,但并没有发版本,应该时数据输入的问题

碰到报错:

A non well formed numeric value encountered

定位代码:

/*
* 操作,入库的价格(提交后操作后方可入库)
* 单位分 *100
*/

function price4Operate($price) {
if ($price == 0) {
return 0;
}
$price = number_format($price, 2, ".", "") * 100;
    $price = $price > 0 ? $price : 0;
return $price;
}
传入的$price是数据不是int类型的,可能是varchar等等

解决方法:
可以使用float()或者floatval函数将非格式良好的数据转换成良好的数据类型就OK了!
$price = number_format((float)$price, 2, ".", "") * 100;

其实这种类似因为数据转换或计算而报错的场景也会有,

比如在php计算除法时,被除数时0,同样也会报类似的错误

关键需要我们程序员在写代码的时候要严谨可能发生的场景,提前做到判断。

 author:hann

原文地址:https://www.cnblogs.com/widgetbox/p/13094117.html