如何从数值数组值中删除引号

时间:2016-11-21 20:44:29

标签: php arrays json types quotes

如何让我的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,

2 个答案:

答案 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';

但是,如果您正在使用的阵列来自其他一些来源,例如查询结果,则需要在几个选项之间做出决定:

  1. JSON_NUMERIC_CHECK时使用json_encode(请记住,它不仅会将该列转换为数字;它会转换任何看起来像数字的内容 - 您可以看到各种关于this answerthe PHP documentation

  2. 的评论中有关此问题的警告
  3. 弄清楚如何调整数据源或获取数据的方式,以便您获得的数组已经有int而不是字符串(例如,关闭PDO中的模拟准备)

  4. json_encode之前转换数组中的值。有多种方法可以做到这一点,例如$data['eCode'] = (int) $data['eCode'];

  5. 在我看来,选项2将是处理它的最佳方式。