json_decode декодирует большую числовую строку как целое число

У меня есть что-то вроде следующего кода:

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

Это приводит к следующему:

int(9223372036854775807)

Конечно, это не строка json, и я ожидал, что json_decode вернет либо ноль, либо false, как описано в руководство:

Возвращаемые значения

Возвращает значение, закодированное в json в соответствующем типе PHP. Ценности
true, false и null возвращаются как TRUE, FALSE и NULL
соответственно. NULL возвращается, если JSON не может быть декодирован или если
закодированные данные глубже, чем предел рекурсии.

Как это возможно? Это ошибка или я что-то упустил?

1

Решение

Вам не хватает опции JSON_BIGINT_AS_STRING, кстати, строка является допустимым JSON. Попробуйте следующее:

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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]