json_decode 将大数字字符串解码为整数

2 php json integer

我有类似以下代码:

<?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。

这怎么可能?这是一个错误还是我错过了什么?

kar*_*dra 5

您缺少 JSON_BIGINT_AS_STRING 选项,顺便说一句,字符串是有效的 json。尝试以下操作:

var_dump(json_decode($str, false, 512, JSON_BIGINT_AS_STRING));
Run Code Online (Sandbox Code Playgroud)