我有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文件都是相同的。我似乎无法弄清问题在哪里,我已经坐了几个小时,有没有人有任何想法?
答案 0 :(得分:1)
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)
}
}