我发现php版本5.1.6中的json_encode不会返回空键
例如
var_dump(json_encode(array(""=>"value")));
var_dump(json_encode(array(""=>"value1", "key2"=>"value2")));
预期结果:
string(15) "{"":"value"}"
string(17) "{"":"value1", "key2":"value2"}"
实际结果:
string(2) "{}"
string(17) "{"key2":"value2"}"
然而在5.3X
实际结果:
string(15) "{"":"value"}"
string(17) "{"":"value1", "key2":"value2"}"
除了php 5.3x和5.1.6之间json_encode的任何其他差异之外,我的问题是上面的效果。
答案 0 :(得分:1)
自5.2.0版以来,函数json_encode
Docs是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
}
}