我对PHP json_encode函数有一个问题.它将数字编码为字符串,例如
array('id' => 3)
变成
"{ ["id": "3", ...)
当js遇到这些值时,它会将它们解释为字符串,数字操作会失败.有人知道防止json_encode
将数字编码为字符串的方法吗?非常感谢.
我对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个也能让你感兴趣,顺便说一下?