我正在尝试将我的一个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()
函数是否有变化?
答案 0 :(得分:4)
根据changelog of json_decode()
,任何“虚假”字符串值(表示空字符串null
和false
)都将导致JSON语法错误。所以是的,PHP 5和PHP 7之间的json_decode()
有所不同。json_last_error()
并没有改变。
json_encode()
的7.0.0中的更改日志:
空的PHP字符串或转换为字符串后为空字符串(NULL,FALSE)的值会导致JSON语法错误。