【问题标题】:json_decode() returns different values on different environmentjson_decode() 在不同的环境下返回不同的值
【发布时间】:2017-10-24 09:59:32
【问题描述】:

这让我很困惑,我不明白为什么会这样。

在我的本地主机上,它在 XAMPP 上运行带有 PHP 5.6.15 的 Windows 8.1 企业版

<?php var_dump(json_decode('26-10-2017'));

返回

NULL

在 LAMP 上运行 Ubuntu 14.04 LTS 和 PHP 5.5.9 的 Linode 机器上(运行 Sentora 面板)

我明白了

int(26)

我非常感谢任何能解释我这一现象的人。

我知道这不是有效的 JSON,但是,我的目的是了解导致这种输出差异的原因以及如何避免这种情况。


我试过json_last_error(),其实我在尝试

function isValidJSON($string) {
    json_decode($string);
    return (json_last_error() == JSON_ERROR_NONE);
}

但是,它似乎没有显示任何错误。

<?php var_dump(json_decode('26-10-2017')); var_dump(json_last_error());

返回

int(26)
int(0)

谢谢!

【问题讨论】:

  • 这不是有效的 JSON 开头。为什么它返回不同值的问题很有趣(也许是 HHVM 与 PHP 本身,和/或不同的版本……?),但最终这根本不应该工作。
  • FWIW,只有部分 5.2.x 版本在此处返回 null 以外的任何内容:3v4l.org/Y0DEH - 无论哪种方式,这都是一个 PHP 错误。

标签: php json json-deserialization


【解决方案1】:

检查json_last_error(),它将返回在上一次 JSON 编码/解码期间发生的最后一个错误(如果有)。

我希望你能找到一些有趣的事实:) 干杯!!

【讨论】:

  • 我确实尝试过,实际上我正在尝试 function isValidJSON($string) { json_decode($string);返回 (json_last_error() == JSON_ERROR_NONE);但是,它似乎没有显示任何错误。返回 int(0)。谢谢!
  • 您正在返回布尔表达式,因此它只返回 10,而不是返回 json_last_error()echo 输出
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-20
  • 2014-05-16
  • 2016-10-18
相关资源
最近更新 更多