>我有 2 台服务器,每台服务器运行相同的应用程序,我有一个返回 json 响应的函数。
使用print_r($object)
时,我在两台服务器上都得到这个:
Array
(
[stats] => Array
(
[6871] => 200
)
[answers] => Array
(
[0] => 7171
)
)
当我使用json_encode($object);
时,我得到这个:
对于服务器 A:
{"stats":{"6871":200},"answerswers":["7171"]}
对于服务器 B:
{"stats":{"6871":200},"answerswers":[7171]}
因此,一台服务器将answers
的整数值编码为字符串。
服务器正在运行:
- 乌班图目录
- 服务器 A:Ubuntu 14.04.1 LTS
- 服务器 B:Ubuntu 13.10
- 恩金克斯
- 服务器 A:nginx/1.6.2
- 服务器 B: nginx/1.5.12
- PHP-FPM
- 服务器 A:PHP 5.5.9
- 服务器 B PHP 5.5.3
两个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)
}
}