您的位置:首页 > 编程语言 > PHP开发

ecshop在php5.3以上的错误number_format() 解决方案

2012-09-17 17:07 204 查看
  
ecshop在php5.3上报错:


Warning
: number_format() expects parameter 1 to be double, string given inD:\*******\includes\lib_common.php on
line 959

Warning: number_format() expects parameter 1 to be double, string given inD:\[b]*******\includes\lib_common.php[/b] on
line 959

这个错误是ecshop 在php5.3以上的报错

原因是配送插件里面的免费额度为0,ec本身的bug导致了$price的值为空值,直接调用number_format出现了错误。

解决方案如下:

/**

* 格式化商品价格

*

* @access public

* @param float $price 商品价格

* @return string

*/

function price_format($price, $change_price = true)

{

if ($change_price && defined('ECS_ADMIN') === false)

{

switch ($GLOBALS['_CFG']['price_format'])

{

case 0:

$price = number_format($price, 2, '.', '');

break;

case 1: // 保留不为 0 的尾数

$price = preg_replace('/(.*)(\\.)([0-9]*?)0+$/', '\1\2\3', number_format($price, 2, '.', ''));

if (substr($price, -1) == '.')

{

$price = substr($price, 0, -1);

}

break;

case 2: // 不四舍五入,保留1位

$price = substr(number_format($price, 2, '.', ''), 0, -1);

break;

case 3: // 直接取整

$price = intval($price);

break;

case 4: // 四舍五入,保留 1 位

$price = number_format($price, 1, '.', '');

break;

case 5: // 先四舍五入,不保留小数

$price = round($price);

break;

}

}

else

{


if(!$price){

$price = 0;

}

$price = number_format($price, 2, '.', '');

}

return sprintf($GLOBALS['_CFG']['currency_format'], $price);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: