在macosx和linux上,php json_编码漂亮打印的不同结果

在macosx和linux上,php json_编码漂亮打印的不同结果,php,json,linux,macos,Php,Json,Linux,Macos,我有一个代码生成器,开发者可以在本地计算机上运行,在那里他们可以使用不同版本的php和操作系统。 因此,在MacOSX和linux上的PHP5.5之间,json_编码有一种不同的行为 mac os x: php -r "echo json_encode(['a' => []], JSON_PRETTY_PRINT);" { "a": [] } linux: php -r "echo json_encode(['a' => []], JSON_PRETTY_PRINT);"

我有一个代码生成器,开发者可以在本地计算机上运行,在那里他们可以使用不同版本的php和操作系统。 因此,在MacOSX和linux上的PHP5.5之间,json_编码有一种不同的行为

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);

由于这是在离线工具中使用的,所以速度不应该是一个大问题,那么您可以创建自己的漂亮打印功能,以在主机操作系统上保持可预测的行为。这篇文章展示了一个不错的解决方案(见底部更新的代码):它是为旧的(v5.4之前)php版本设计的,没有安装漂亮的打印,但它应该非常适合您的目的,因为它是在脱机工具中使用的,所以速度不应该是一个大问题,然后您可以创建自己的pretty print函数,以便在主机操作系统上保持可预测的行为。这篇文章展示了一个不错的解决方案(见底部的更新代码):它是为旧的(v5.4之前)php版本设计的,这些版本没有安装漂亮的打印功能,但是它应该非常适合您的目的