首页 > 网站 > 建站经验 > 正文

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

2024-04-25 20:39:49
字体:
来源:转载
供稿:网友

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:/*******/includes/lib_common.php 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);

}

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表