首页 > 解决方案 > 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()

标签: phpjsonphp-7

解决方案


根据 的更改日志json_decode(),任何“虚假”字符串值(表示空字符串nullfalse)都将导致 JSON 语法错误。所以是的,json_decode()PHP 5 和 PHP 7 之间发生了json_last_error()变化。但是没有改变。

7.0.0 中的变更日志json_encode()

空 PHP 字符串或转换为字符串后为空字符串(NULL,FALSE)的值会导致 JSON 语法错误。


推荐阅读