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

Posted

技术标签:

【中文标题】如何从数值数组值中删除引号【英文标题】:How to remove quotes from numerical array value 【发布时间】:2017-04-05 08:53:30 【问题描述】:

我怎样才能让我的 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,

【问题讨论】:

使用'eCode' =&gt; 0 我认为这是第一行代码中的 typeo? 它对我有用,谢谢.. @u_mulder 你应该在底部进纸器之前回答 @Dagon 我希望我不会因为回答这个问题而被视为底层支持者。 【参考方案1】:

你引用了零,使它成为一个字符串。只需将其保留为 int:

<?php
$data = array('eCode' => 0, 'city' => 'london', 'time' => '15:35');
echo json_encode($data);
?>

【讨论】:

@Xorifelse:恕我直言,cmets 不是用来回答的。如果 u_mulder 想回答,有办法发布答案。 @AbraCadaver 澄清一下,我没有投反对票。我在发布此答案时所说的只是 OP 已经声明 u_mulders 解决方案有效。将其添加到答案中并不难。【参考方案2】:

这个答案重申了其他人已经说过的一些事情,但希望更多的解释会有所帮助。

基本上,零在json_encode($data)的输出中被引用因为它在输入中被引用

json_encode 不会自动将数字字符串转换为整数,除非您设置了JSON_NUMERIC_CHECK 选项,例如:

echo json_encode($data, JSON_NUMERIC_CHECK);

如果您正在尝试使用代码构建数组json_encode,那么您应该能够在构建数组时简单地将整数而不是数字字符串添加到数组中:

$data['eCode'] = 0;         // use 0 instead of '0'
$data['city'] = 'london';
$data['time'] = '15:35';

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

    json_encode 时使用JSON_NUMERIC_CHECK(请记住,它不仅会将该列转换为数字;它还会转换任何看起来像数字的内容 - 您可以在this answer 和 the PHP documentation 上的 cmets)

    弄清楚如何调整数据源或获取数据的方式,以便获得的数组已经包含整数而不是字符串(例如,关闭 PDO 中的模拟准备)

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

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

【讨论】:

您的回答过于专注于编码,间接回答了问题,但仍然非常信息量很大。有了这些信息,您可以decode -&gt; encode (with JSON_NUMERIC_CHECK) -&gt; decode 获得所需的结果,而无需更改输入。 @Xorifelse 我想说的一点(也许我需要编辑以更加强调那部分)是我认为处理这个问题的正确方法是将它修复为接近尽可能使用源,即获取一个以 int 开头的数组,而不是在事后尝试对其进行操作。

以上是关于如何从数值数组值中删除引号的主要内容,如果未能解决你的问题,请参考以下文章

如何保留数组中值的引号

从 XML 的值中删除或替换双引号(特定搜索和替换)

从 R 中的字符向量中删除引号

从存储在另一个变量中的值中提取数值[重复]

解决json string转object,value值存在英语双引号,无法解析问题。以及遇到value值中有双引号,如何解析成功。

解决json string转object,value值存在英语双引号,无法解析问题。以及遇到value值中有双引号,如何解析成功。