PHP 5和7-json_last_error差异

时间:2018-10-28 10:54:10

标签: php json php-7

我正在尝试将我的一个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()函数是否有变化?

1 个答案:

答案 0 :(得分:4)

根据changelog of json_decode(),任何“虚假”字符串值(表示空字符串nullfalse)都将导致JSON语法错误。所以是的,PHP 5和PHP 7之间的json_decode()有所不同。json_last_error()并没有改变。

json_encode()的7.0.0中的更改日志:

  

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