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
的整数值编码为字符串。
服务器是 运行:
- ubuntu
- 服务器 A:Ubuntu 14.04.1 LTS
- 服务器 B:Ubuntu13.10
- nginx
- 服务器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)
}
}
我有 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
的整数值编码为字符串。
服务器是 运行:
- ubuntu
- 服务器 A:Ubuntu 14.04.1 LTS
- 服务器 B:Ubuntu13.10
- nginx
- 服务器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)
}
}