JSON中键的顺序不相关,因此PHP的json_encode
在序列化JSON格式时使用键的内部顺序。我想确保等效的JSON总是以相同的形式序列化。例如,以下示例中的$a
和$b
$a = ["foo" => 1, "bar" => 2, "doz" => 3];
$b = ["doz" => 3, "bar" => 2, "foo" => 1];
print json_encode($a)."\n";
print json_encode($b)."\n";
导致不同的序列化
{"foo":1,"bar":2,"doz":3}
{"doz":3,"bar":2,"foo":1}
但它们是等价的。
答案 0 :(得分:2)
你需要以某种方式对数组进行排序,我建议按键排序(foo,bar,doz)。 http://php.net/manual/en/function.ksort.php
使用相同的按键时,顺序将始终相同。
我还没有对此进行测试,但它应该适用于您的代码。
$a = ["foo" => 1, "bar" => 2, "doz" => 3];
$b = ["doz" => 3, "bar" => 2, "foo" => 1];
ksort($a);
ksort($b);
print json_encode($a)."\n";
print json_encode($b)."\n";
这将打印:
{"杆":2" DOZ":3,"富":1}
{"杆":2" DOZ":3,"富":1}