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

时间:2011-08-11 08:28:07

标签: php json

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

例如

  1. var_dump(json_encode(array(""=>"value")));
  2. var_dump(json_encode(array(""=>"value1", "key2"=>"value2")));
  3. 预期结果:

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

      1. string(2) "{}"
      2. string(17) "{"key2":"value2"}"
      3. 然而在5.3X

        实际结果:

        1. string(15) "{"":"value"}"
        2. string(17) "{"":"value1", "key2":"value2"}"
        3. 除了php 5.3x和5.1.6之间json_encode的任何其他差异之外,我的问题是上面的效果。

2 个答案:

答案 0 :(得分:1)

自5.2.0版以来,函数json_encodeDocs是PHP的一部分。如果您查看手册,您会注意到一个名为Changelog的部分。它记录了函数随时间的变化,并引入了标志来控制json字符串输出。

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

如果你真的需要了解输出的每个差异,你需要最终查看source-code of that function according to version。它是用C语言编写的.PHP是开源软件,这意味着,没有任何隐藏,所以你可以检查版本之间的任何变化。

答案 1 :(得分:0)

在5.2.1之前,PHP中没有json_encode。

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

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