php - 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()
,任何“虚假”字符串值(表示空字符串null
和false
)都将导致 JSON 语法错误。所以是的,json_decode()
PHP 5 和 PHP 7 之间发生了json_last_error()
变化。但是没有改变。
7.0.0 中的变更日志json_encode()
:
空 PHP 字符串或转换为字符串后为空字符串(NULL,FALSE)的值会导致 JSON 语法错误。
推荐阅读
- c - C Tcl 命令未被识别
- google-apps-script - 使用应用脚本输入数据后,是否可以保护谷歌表格中的单元格和范围?
- javascript - 我需要对 Href 链接做任何事情吗?喜欢编码它左右
- python - ImportError:DLL 加载失败:找不到指定的模块。在使用烧瓶和 python 运行 app.py 文件时?
- excel - VBA:识别工作表中的最后一行公式(或数据),复制该行,然后在其正下方粘贴一行
- python - 如何将一列的值与其他列中的多个值进行比较?
- c# - 如何最小化 Visual Studio 设计器文件中的流失
- sql - SQL 我在哪里放置选项重新编译?
- ruby-on-rails - Ruby on Rails 6 脚手架模板位于何处?
- c# - 在 .Net Core 中为 Excel RTD() 函数编译 IRtdServer 接口