2016-11-21 33 views
3

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

+7

使用''eCode'=> 0' –

+2

我认为这是第一代码行中的typeo? – 2016-11-21 20:49:04

+0

它适用于我谢谢.. – dony82

回答

1

您正在引用零,使其成为字符串。只要把它作为一个INT:

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

为什么不让先生u_mulder信用? – Xorifelse

+0

的确,我同意。我刚才回答了这个问题。 – Stuart

+1

@Xorifelse:在所有应有的尊重,评论是不是答案。如果u_mulder想回答,可以发布答案。 – AbraCadaver

1

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

基本上,零点在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'; 

不过,如果你与来自其他来源的到来,如工作阵列查询结果,你需要几个选项之间做出选择:

  1. 使用JSON_NUMERIC_CHECK当你json_encode(请记住,它不会只列转换为数字;它会转换任何看起来像数字的东西 - 你可以在this answerthe PHP documentation

  2. 的注释中看到各种警告。您获得的数组将已经具有整数而不是字符串(例如,关闭PDO中的模拟准备)

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

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

+0

你的答案太过专注于编码,间接回答这个问题,但仍*非常*信息。有了这些信息,我们就可以解码 - >编码(使用JSON_NUMERIC_CHECK) - >解码,以在不改变输入的情况下获得所需的结果。 – Xorifelse

+0

@Xorifelse我想表达的观点(也许我需要编辑以增加对该部分的重视)是我认为解决这个问题的正确方法是尽可能地将它尽可能地修复,即得到一个带有int值的数组,而不是在事实之后尝试操作它。 –