php json_decode返回无限

时间:2015-06-11 21:07:23

标签: php json

如果我运行以下命令,则不会返回任何错误,$ result的值为INFjson_last_error()会返回0

$result = json_decode('547533e683433', true);

由于这是一个字符串而不是JSON,我希望$resultNULLjson_last_error()可以返回4JSON_ERROR_SYNTAX

为什么会这样?

1 个答案:

答案 0 :(得分:3)

这是预期的结果。虽然'547533e683433'是无效的JSON,但PHP仍然可以“解码”它。

  

PHP实现了原始RFC中指定的JSON超集   4627 - 它还将编码和解码标量类型和NULL。

根据json_decode的文档,PHP将解码单个标量值,而不仅仅是数组/对象。

'547533e683433'的情况下,解码时它被解释为 int (字符串需要用双引号)。 547533e683433被视为547533 x 10^683433(请参阅is_numeric的文档),这是一个很大的数字。 PHP不能代表这么大的数字,因此它会为您提供INF