Я пытаюсь обновить одно из моих PHP-приложений до PHP7. Все работает отлично, кроме одного. Я вижу, что json_last_error() возвращает другое значение в PHP7.
$input = file_get_contents('php://input');
$json = json_decode($input, true);
print_r(json_last_error());
Когда я делаю
curl 'http://localhost/test.php' -H 'Content-Type: application/json' --compressed
PHP 5 возвращает 0 (JSON_ERROR_NONE)
PHP 7 возвращает 4 (JSON_ERROR_SYNTAX)
Я просмотрел официальную документацию, если были изменения, но не смог найти никакой информации.
Произошло ли изменение функции json_decode() или json_last_error()?
@Qirel Я думаю, что (со ссылкой на то, откуда вы цитируете) будет хороший ответ.






Согласно список изменений json_decode(), любое "ложное" строковое значение (имеется в виду пустые строки, null и false) приведет к синтаксической ошибке JSON. Итак, да, между PHP 5 и PHP 7 произошли изменения в json_decode(). Однако json_last_error() не изменился.
Список изменений json_encode() в версии 7.0.0:
An empty PHP string or value that after casting to string is an empty string (NULL, FALSE) results in JSON syntax error.
Произошло изменение
json_decode(), "7.0.0 Пустая строка PHP или значение, которое после преобразования в строку является пустой строкой (NULL, FALSE), приводит к синтаксической ошибке JSON."