那夜我还很年幼~
我不去想身后会不会袭来寒风冷雨 既然目标是地平线 留给世界的只能是背影

今天在获取淘宝客佣金记录时候,淘宝返回给我的json格式的数据。

数据如下

{"taobaoke_report_get_response":{"taobaoke_report":{"taobaoke_report_members":{"taobaoke_report_member":[{"app_key":"21077206","commission":"0.36","commission_rate":"0.02","num_iid":13786550129,"pay_price":"36.0","pay_time":"2012-12-08
13:20:17","seller_nick":"鐗╃編鐢熸椿瀹跺眳","trade_id":178176378083235}]},"total_results":1}}}

我用json_decode转换类型后

object(stdClass)#19 (1) { ["taobaoke_report_get_response"]=>
object(stdClass)#20 (1) { ["taobaoke_report"]=> object(stdClass)#21 (2) {
["taobaoke_report_members"]=> object(stdClass)#22 (1) {
["taobaoke_report_member"]=> array(1) { [0]=> object(stdClass)#23 (8) {
["app_key"]=> string(8) "21077206" ["commission"]=> string(4) "0.36"
["commission_rate"]=> string(4) "0.02" ["num_iid"]=> float(13786550129)
["pay_price"]=> string(4) "36.0" ["pay_time"]=> string(19) "2012-12-08
13:20:17" ["seller_nick"]=> string(18) "鐗╃編鐢熸椿瀹跺眳" ["trade_id"]=>
float(1.7817637808324E+14) } } } ["total_results"]=> int(1) } } }

发现了一个问题我的trade_id id由原来的值178176378083235 变成了现在的1.7817637808324E+14

这是由PHP整数值范围决定的,而这个范围依赖于操作系统。在32位操作系统中,PHP的整数最大值是2147483647,你可以通过输出PHP_INT_MAX看到。

我 的是php5.3以后的版本,所以json_decode自动给我由int转换成了float。由于 我的值 较大,转换后的值 也不是我要的值 。

怎么办呢?

我想到的 办法主是把 用字符串替换,把我获取的json格式的字符串中的trade_id  加上双引号就变成了字符串这样就没问题了。

$data = {"taobaoke_report_get_response":{"taobaoke_report":{"taobaoke_report_members":{"taobaoke_report_member":[{"app_key":"21077206","commission":"0.36","commission_rate":"0.02","num_iid":13786550129,"pay_price":"36.0","pay_time":"2012-12-08
13:20:17","seller_nick":"鐗╃編鐢熸椿瀹跺眳","trade_id":178176378083235}]},"total_results":1}}}

$data=preg_replace('/("trade_id":)(\d{6,})/i', '${1}"${2}"', $data);

输出$data得

{"taobaoke_report_get_response":{"taobaoke_report":{"taobaoke_report_members":{"taobaoke_report_member":[{"app_key":"21077206","commission":"0.36","commission_rate":"0.02","num_iid":13786550129,"pay_price":"36.0","pay_time":"2012-12-08
13:20:17","seller_nick":"鐗╃編鐢熸椿瀹跺眳","trade_id":"178176378083235"}]},"total_results":1}}}"

现在trade_id的值 加了双引号变成字符串了"178176378083235"

把得到的json格式的$data

json_decode($data)后输出 值 如下

object(stdClass)#19 (1) { ["taobaoke_report_get_response"]=>
object(stdClass)#20 (1) { ["taobaoke_report"]=> object(stdClass)#21 (2) {
["taobaoke_report_members"]=> object(stdClass)#22 (1) {
["taobaoke_report_member"]=> array(1) { [0]=> object(stdClass)#23 (8) {
["app_key"]=> string(8) "21077206" ["commission"]=> string(4) "0.36"
["commission_rate"]=> string(4) "0.02" ["num_iid"]=> float(13786550129)
["pay_price"]=> string(4) "36.0" ["pay_time"]=> string(19) "2012-12-08
13:20:17" ["seller_nick"]=> string(18) "鐗╃編鐢熸椿瀹跺眳" ["trade_id"]=>
string(15) "178176378083235" } } } ["total_results"]=> int(1) } } }

请看trade_id值 正常了吧!

 

 

 

posted on 2012-12-19 13:02  那夜我还很年幼~  阅读(521)  评论(0)    收藏  举报