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

3
我该如何让我的PHP服务器响应类似于下面的内容:
```html ```
请注意,这只是示例代码,您需要将其替换为您想要显示的实际内容。
{"eCode":0,"city":"london","time":"15:35"}

不要:
{"eCode":"0","city":"london","time":"15:35"}

我将使用以下PHP代码:

我正在使用此PHP代码:

<?php
    $data = array('eCode' => '0', 'city' => 'london', 'time' => '15:35');
    header('Content-type: application/json');
    echo json_encode($data);
?>

那么我该如何将"eCode":"0",中的引号删除,并替换为"eCode":0,呢?

7
使用 'eCode' => 0。 (说明:这是一段简短的 PHP 代码,将 'eCode' 的值设置为 0。) - u_mulder
2
我猜第一行代码中有一个打字错误? - user557846
它对我有效,谢谢。 - dony82
@u_mulder 在底层动物出现之前,你应该先回答。 - user557846
@Dagon,我希望我的回答不会让人觉得我是一个“底层鱼”。 - Don't Panic
2个回答

1
您正在引用零,将其转换为字符串。只需将其保留为整数即可:
<?php
$data = array('eCode' => 0, 'city' => 'london', 'time' => '15:35');
echo json_encode($data);
?>

1
@Xorifelse:恕我直言,评论不是用来回答问题的。如果u_mulder想要回答,可以通过发布答案的方式来进行。 - AbraCadaver
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - Xorifelse

1
这个回答重申了一些其他人已经说过的事情,但希望更多的解释会有所帮助。基本上,在json_encode($data)的输出中引用了零,因为在输入中引用了它。除非您设置了JSON_NUMERIC_CHECK选项,否则json_encode不会自动将数字字符串转换为整数,例如:
echo json_encode($data, JSON_NUMERIC_CHECK);

如果你正在使用代码构建要尝试进行json_encode的数组,则应该能够在构建数组时直接添加整数,而不是将数字字符串添加到数组中:
$data['eCode'] = 0;         // use 0 instead of '0'
$data['city'] = 'london';
$data['time'] = '15:35';

然而,如果你正在处理的数组来自其他来源,比如查询结果,那么你需要在以下几个选项之间作出决定:

  1. 在使用 json_encode 时使用 JSON_NUMERIC_CHECK(请注意,它不仅会将该列转换为数字;它将转换任何看起来像数字的东西 - 你可以在this answerPHP文档的评论中看到各种警告)

  2. 找出如何调整数据源或获取数据的方式,以便你获得的数组已经有整数而不是字符串(例如,在PDO中关闭模拟准备语句)

  3. 在进行 json_encode 之前,将数组中的值转换为所需类型。有多种方法可以做到这一点,例如 $data['eCode'] = (int) $data['eCode'];

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


你的回答过于关注编码,虽然间接回答了问题,但仍然非常有用。有了这些信息,我们可以使用decode -> encode (with JSON_NUMERIC_CHECK) -> decode来获得所需的结果,而不改变输入。 - Xorifelse
@Xorifelse 我想要表达的观点是(也许我需要编辑一下加强这部分内容),我认为解决这个问题的正确方式是在源头尽可能地进行修复,即一开始就使用包含 int 的数组而不是事后尝试操纵它。 - Don't Panic

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接