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

时间:2015-01-23 11:58:28

标签: php json integer

我有类似下面的代码:

<?php
$str = "76017060710034014696970658200876993546";
if(json_decode($str) !== null && json_decode($str) !== false){
  var_dump(json_decode($str));
}
?>

结果如下:

int(9223372036854775807)

当然,这不是json字符串,我希望json_decode返回null或false,如manual中所述:

  

返回值

     

以适当的PHP类型返回json中编码的值。值   true,false和null返回为TRUE,FALSE和NULL   分别。如果json无法解码或者如果是,则返回NULL   编码数据比递归限制更深。

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

1 个答案:

答案 0 :(得分:4)

你缺少一个选项JSON_BIGINT_AS_STRING,顺便说一句字符串是一个有效的json。请尝试以下方法:

var_dump(json_decode($str, false, 512, JSON_BIGINT_AS_STRING));