我对PHP json_encode函数有一个问题.它将数字编码为字符串,例如

array('id' => 3)

变成

"{ ["id": "3", ...)

当js遇到这些值时,它会将它们解释为字符串,数字操作会失败.有人知道防止json_encode将数字编码为字符串的方法吗?非常感谢.

推荐答案

我做了一个非常快速的测试:

$a = array(
    'id' => 152,
    'another' => 'test',
    'ananother' => 456,
);
$json = json_encode($a);
echo $json;

如果我没弄错的话,这似乎和你描述的一样?

我得到的结果是:

{"id":152,"another":"test","ananother":456}

所以,在这种情况下,整数没有被转换成字符串.


不过,这可能取决于我们使用的PHP版本:根据PHP版本的不同,已经更正了几个与json_encode相关的错误……

这个测试是用PHP5.2.6进行的;我对PHP5.2.9和5.3.0也有同样的看法;我没有其他的5.2.要测试的x版本,但是:-(

您使用的是哪个版本的PHP?或者您的测试用例比您发布的示例更复杂?

也许http://bugs.php.net/上的一个bug报告可能是相关的?比方说,Bug #40503 : json_encode integer conversion is inconsistent with PHP


也许Bug #38680个也能让你感兴趣,顺便说一下?

Php相关问答推荐

有条件的运费率基于购物车小计与WooPayments货币转换

累加平面数组中数字子集的所有组合,以生成组合及其乘积的二维数组

有什么方法可以阻止WordPress主题升级通知吗?

如果WooCommerce中存在特定的运输方式,则隐藏其他运输方式

WooCommerce HPOS管理订单列表中带有订单元数据的定制列

WooCommerce短代码,显示特定产品的购物车徽章中的当前数量

Symfony Validator:如何使用XML表示法验证深度嵌套的数据?

htaccess重命名index.php以在URL中显示为SEO的友好名称

关于Laravel缓存出现的错误

Symfony:从控制器内部调用自定义命令

Laravel 10 中的自定义类未找到

Symfony:指定 data_class 时,提交的表单获取初始化前不得访问

WooCommerce checkout 流程中基于所选选项添加自定义费用

Laravel auth()->id() 在生产服务器中不工作

显示时间范围内的可用空位,同时考虑已预订的空位

计算组合指数

PHP 日期格式:ISO8601 与 ISO8601_EXPANDED

正则表达式抓取递归括号的内容

无法在 Laravel 10 中安装 jenssegers/mongodb

如何在 php/laravel 中获取元素在数组中的位置