php函数json_encode在5.3X和5.1.6版本之间有所不同


php function json_encode different between verion 5.3X and 5.1.6

我发现php版本5.1.6中的json_encode将不会返回空键

例如

  1. var_dump(json_encode(array(""=>"value")));
  2. var_dump(json_encode(array(""=>"value1", "key2"=>"value2")));

预期结果:

  1. string(15) "{"":"value"}"
  2. string(17) "{"":"value1", "key2":"value2"}"
实际结果:

  1. string(2) "{}"
  2. string(17) "{"key2":"value2"}"

然而在5.3X

实际结果:

  1. string(15) "{"":"value"}"
  2. string(17) "{"":"value1", "key2":"value2"}"

我的问题是除了上述影响json_encode php 5.3x和5.1.6之间的任何其他差异

函数json_encode Docs是PHP 5.2.0版本的一部分。如果你看一下手册,你会注意到一个叫做Changelog的章节。它记录了函数随着时间的推移而改变,并且引入了标志来控制json字符串输出。

输出也很可能随着时间的推移而改变,您可能需要使用额外的参数来更好地控制预期的行为。此外,该函数还有一些未记录的标志。

如果您确实需要了解输出的每个差异,则需要根据版本最终查看该函数的源代码。它是用c语言编写的。PHP是开源软件,这意味着没有什么隐藏的,所以你可以检查版本之间的任何更改。

5.2.1之前PHP没有json_encode

您可以编写自己的故障转移:

if (!function_exists('json_encode')) {
    function json_encode($data)
    {
        // your code that parses to json
    }
}