我有类似以下代码:
<?php
$str = "76017060710034014696970658200876993546";
if(json_decode($str) !== null && json_decode($str) !== false){
var_dump(json_decode($str));
}
?>
Run Code Online (Sandbox Code Playgroud)
结果如下:
int(9223372036854775807)
Run Code Online (Sandbox Code Playgroud)
当然,这不是 json 字符串,我希望 json_decode 返回 null 或 false,如手册中所述:
返回值
以适当的 PHP 类型返回以 json 编码的值。true、false 和 null 值分别返回为 TRUE、FALSE 和 NULL。如果 json 无法解码或者编码数据深度超过递归限制,则返回 NULL。
这怎么可能?这是一个错误还是我错过了什么?
您缺少 JSON_BIGINT_AS_STRING 选项,顺便说一句,字符串是有效的 json。尝试以下操作:
var_dump(json_decode($str, false, 512, JSON_BIGINT_AS_STRING));
Run Code Online (Sandbox Code Playgroud)