如何让我的PHP服务器响应这样的事情:
{"eCode":0,"city":"london","time":"15:35"}
不
{"eCode":"0","city":"london","time":"15:35"}
我正在使用这个PHP代码:
<?php
$data = array('eCode' => '0', 'city' => 'london', 'time' => '15:35');
header('Content-type: application/json');
echo json_encode($data);
?>
那么如何从"eCode":"0",
中删除引号并将其替换为"eCode":0,
?
答案 0 :(得分:1)
你引用了零,使它成为一个字符串。把它留作int:
<?php
$data = array('eCode' => 0, 'city' => 'london', 'time' => '15:35');
echo json_encode($data);
?>
答案 1 :(得分:1)
这个答案重申了其他人已经说过的一些事情,但希望多一点解释会有所帮助。
基本上,零在json_encode($data)
的输出中引用,因为它在输入中引用。
json_encode
不会自动将数字字符串转换为整数,除非您设置了JSON_NUMERIC_CHECK
选项,例如:
echo json_encode($data, JSON_NUMERIC_CHECK);
如果您正在构建数组,那么您正在尝试json_encode
使用您的代码,那么您应该能够在构建数组时简单地将int而不是数字字符串添加到数组中:
$data['eCode'] = 0; // use 0 instead of '0'
$data['city'] = 'london';
$data['time'] = '15:35';
但是,如果您正在使用的阵列来自其他一些来源,例如查询结果,则需要在几个选项之间做出决定:
JSON_NUMERIC_CHECK
时使用json_encode
(请记住,它不仅会将该列转换为数字;它会转换任何看起来像数字的内容 - 您可以看到各种关于this answer和the PHP documentation)
弄清楚如何调整数据源或获取数据的方式,以便您获得的数组已经有int而不是字符串(例如,关闭PDO中的模拟准备)
在json_encode
之前转换数组中的值。有多种方法可以做到这一点,例如$data['eCode'] = (int) $data['eCode'];
。
在我看来,选项2将是处理它的最佳方式。