如果我运行以下命令,则不会返回任何错误,$ result的值为INF
。 json_last_error()
会返回0
。
$result = json_decode('547533e683433', true);
由于这是一个字符串而不是JSON,我希望$result
为NULL
而json_last_error()
可以返回4
或JSON_ERROR_SYNTAX
。
为什么会这样?
答案 0 :(得分:3)
这是预期的结果。虽然'547533e683433'
是无效的JSON,但PHP仍然可以“解码”它。
PHP实现了原始RFC中指定的JSON超集 4627 - 它还将编码和解码标量类型和NULL。
根据json_decode
的文档,PHP将解码单个标量值,而不仅仅是数组/对象。
在'547533e683433'
的情况下,解码时它被解释为 int (字符串需要用双引号)。 547533e683433
被视为547533 x 10^683433
(请参阅is_numeric
的文档),这是一个很大的数字。 PHP不能代表这么大的数字,因此它会为您提供INF
。