Php json_encode 在 2 个不同的服务器上为同一对象返回不同的值

Php json_encode returning different values on 2 different servers for same object

我有 2 个服务器,每个服务器 运行 相同的应用程序,我有一个返回 json 响应的函数。

当使用 print_r($object) 时,我在两台服务器上都得到了这个:

Array
(
    [stats] => Array
        (
            [6871] => 200
        )

    [answers] => Array
        (
            [0] => 7171
        )

)

当我使用 json_encode($object); 我得到这个:

对于服务器 A:

{"stats":{"6871":200},"answers":["7171"]}

对于服务器 B:

{"stats":{"6871":200},"answers":[7171]}

所以一台服务器正在将 answers 的整数值编码为字符串。

服务器是 运行:

两个 nginx.conf 文件是相同的。我似乎无法弄清楚问题出在哪里,我已经坐了好几个小时了,有人有什么想法吗?

print_r()函数没有准确表示数据类型:

<?php

$string_values = array(
    'stats' => array (
        6871 => '200'
    ),
);

$numeric_values = array(
    'stats' => array (
        6871 => 200,
    ),
);


print_r($string_values);
print_r($numeric_values);

... 将打印相同的输出两次:

Array
(
    [stats] => Array
        (
            [6871] => 200
        )

)
Array
(
    [stats] => Array
        (
            [6871] => 200
        )

)

你最好切换到var_dump():

var_dump($string_values, $numeric_values);
array(1) {
  ["stats"]=>
  array(1) {
    [6871]=>
    string(3) "200"
  }
}
array(1) {
  ["stats"]=>
  array(1) {
    [6871]=>
    int(200)
  }
}