| 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);
 }
 |