我有一个代码生成器,开发人员可以在本地计算机上运行,他们可以使用不同版本的php和操作系统。 因此,在mac os x和linux上的php 5.5之间存在json_encode的不同行为。
mac os x:
php -r "echo json_encode(['a' => []], JSON_PRETTY_PRINT);"
{
"a": []
}
的Linux:
php -r "echo json_encode(['a' => []], JSON_PRETTY_PRINT);"
{
"a": [
]
}
由于这个json将被提交到git repo,无论使用什么php构建,它都必须是相同的。
有谁能说为什么会有这样的差异,我该怎么办?现在,我只有一个解决方案可以做出类似的事情:
$generated_code = preg_replace("#\\[\s+\\]#", "[]", $generated_code);