PHP ECSHOP中 诡异的问题:expects parameter 1 to be double

使用Ecshop给客户做了一个商城系统,在测试时发现后台在更改订单的配送方式时出现了以下问题

“PHP Warning: number_format() expects parameter 1 to be double, string given in C:\inetpub\wwwroot\includes\lib_common.php on line 973”

在查看源码的时候并没有发现问题,然后就把$price的打印了出来也没有发现问题,此时$price的值为:string(4) "0.10"

最后在网络上了解到解决方案:

先将值转换成数值类型,然后再使用number_format方法,第938行

但奇怪的是在number_format方法里直接使用string类型并没有任何问题,即使string的值无法完全转换成数值类型也不会出错

如下面的"2s5.689sf"直接转换成2.00,且没有出现问题

参考:

number_format() ,这个函数报错了,怎么办

stackoverflow Warning: number_format() expects parameter 1 to be double

来自为知笔记(Wiz)

时间: 2024-11-10 16:17:44

PHP ECSHOP中 诡异的问题:expects parameter 1 to be double的相关文章

phpcms 后台验证码不显示date() expects parameter 2 to be long

方法一: 主要在于是否开启gd库 查看办法 找到php.ini文件 搜索extension=php_gd2.dll这段代码 然后把前面的;符号去掉即可. 方法二: 关键一点是获取验证码的图片与全局变量SITE_URL相关,也就是网站的目录,所以只要修改cache/configs/system.php文件中的网站路径变量‘web_path’ 即可. 举例说明(本地域名http://localhost)   如果所有的文件都在根目录下(例如apache下的htdocs),此时,默认访问地址应该是ht

ecshop 中的json

ecshop中有2个地方使用了json,一个是cls_json.php文件,一个是transport.js文件. cls_json 封装了json类,可以调用里面的encode的方法,根据参数不同,进行不同的转化,调用json_encode可以直接进行转化.是php对json的处理. transport.js是ecshop封装的ajax方法,通过ajax.call 来实现ajax的调用.ajax传值的过程中,可以选择json来传递,一般也是选择它的,因为这样调用起来方便,转化也方便.所以它对js

ECshop中defined('IN_ECS')的实现原理

在PHP中经常看到如下代码 if (!defined('IN_ECS')) { die('Hacking attempt'); } 实现的原因以及原理如下: ecshop里的有些.php页是不需要用户通过url直接访问的,用来被其它页调用的,例如/includes/init.php,就不需要直接访问,通过url访问你的网址/includes/init.php是无意义的,所以我们在可以直接方问的php里加上define('IN_ECS', true); 例如在index.php中有如下代码,一开头

ecshop中猜你喜欢的原理

最近在实现ecshop中的一个猜你喜欢的原理,一直不明白这个是如何猜的,难道是根据最近浏览记录来得到?百思不得其解,就放下了这个问题,一天在百度搜索东西的时候,突然发现这个右边有个猜你喜欢的功能,其实以前也知道,这里有这个版块,只不过没加注意,这次经过仔细观察发现,原来猜你喜欢的时候,就根据你搜索的相关结果,关联出一些同类产品. 举个例子,比如我搜索notepad2的时候,notepad++,editplus等软件就被列入了猜你喜欢的类别中,因此,在ecshop中如果我们记录了用户的浏览记录,通

报错提示:mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in..的处理方式

PHP操作数据库的时候如果出现报错: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in.. 处理方法是,在$data = mysqli_query($dbc, $query);后加上这样一段代码: if (!$data) { printf("Error: %s\n", mysqli_error($dbc)); exit(); } 之后刷新页面查看具体错误信息. 今天操作的时候也遇

Warning: array_filter() expects parameter 2 to be a valid callback

Warning:  array_filter() expects parameter 2 to be a valid callback, function 'checkMonth' not found or invalid function name in path\to\xxxModel.php on line 36 下面是相关的Code片段 - php版本:5.6: function checkMonth($v){     return $v == $this->month; } funct

ECSHOP中transport.js和jquery的冲突的简单解决办法

ECSHOP中transport.js和jquery的冲突的简单解决办法 一流资源网近日在ECSHOP网站加入了几个JS特效代码,在谷歌.火狐下正常,在各版本IE下都不常,左思不得其解. 最后才知道原来是"ECSHOP中transport.js和jquery的冲突" 因为通用头部文件中引用了 1 {insert_scripts files='transport.js,utils.js'} transport.js与jquery有冲突.原因不多讲.在网上找到一个最简单解决办法: 成功了,

ecshop中的些assign_dynamic(’')

很多做电子商务站的朋友都问我,在ecshop中,里面有个 assign_dynamic('index');这个到底是什么作用来的,这个其实是ecshop中的模板技术,动态处理一些局部信息更新而不被缓存的机制. 先看 assign_dynamic()函数,$sql = 'SELECT id, number, type FROM ' . $GLOBALS['ecs']->table('template') .  " WHERE filename = '$tmp' AND type > 0

关于ecshop中'/library/cat_goods.lbi'的调用来源

library/cat_goods.lbi中 循环代码是这样的, {foreach from=$cat_goods item=goods} 很显然找到$cat_goods这个变量在哪里定义就行了,发现是在这里定义的: includes/libs_goods.php中的assign_cat_goods函数: $GLOBALS['smarty']->assign('cat_goods_' . $cat_id, $goods); 这里对cat_goods进行了全局定义.后发现: includes/li