PHP 5 и 7 - разница json_last_error

Я пытаюсь обновить одно из моих 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()?

Произошло изменение json_decode(), "7.0.0 Пустая строка PHP или значение, которое после преобразования в строку является пустой строкой (NULL, FALSE), приводит к синтаксической ошибке JSON."

Qirel 28.10.2018 12:14

@Qirel Я думаю, что (со ссылкой на то, откуда вы цитируете) будет хороший ответ.

IMSoP 28.10.2018 12:40
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
3
2
592
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Согласно список изменений 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.

Другие вопросы по теме