我发现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"}"
我的问题是除了上述影响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
}
}