php json decode 小数,php – json_decode根据语言环境重新格式化JSON中的小数

我目前正在开发一个本地化为几种语言的网站,我遇到了一个问题,即json_decode根据语言环境重新格式化JSON字符串中的小数.当语言环境设置为“en”时,小数保持不变.但是,在“fr_FR”语言环境中,它们会变为“13,3”.

来源JSON:

{"debug":[{"id":13.3}]}

输出“en”

Array

(

[debug] => Array

(

[0] => Array

(

[id] => 13.3

)

)

)

输出“fr_FR”

Array

(

[debug] => Array

(

[0] => Array

(

[id] => 13,3

)

)

)

有没有什么理由json_decode这样做?有没有办法防止它?

该错误导致Gravity Forms WordPress插件出现问题,但我已经将问题隔离到了json_decode函数.

解决方法:

看起来问题在于PHP如何处理数值. json_decode只是简单地将13.3转换为float,它在输出或转换为字符串时是本地化的“13,3”.但是,PHP不能很好地处理本地化的数字格式.

根据这个thread,使用setlocale解决了这个问题(大部分)

setlocale(LC_NUMERIC, 'C');

标签:json,wordpress,php,localization

来源: https://codeday.me/bug/20190624/1279878.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值