删除json编码数组中每个元素周围的双引号

时间:2013-09-20 16:57:23

标签: php arrays json quotes

我正在尝试将数组传递给GoogleChart API,该API将接受如下所示的数组:

$arr=array(['Time' , 'Value'],['08' , 100 ],['10' , 200], ['12' , 300]);
$arr=(json_encode($arr));
echo($arr);
//result
[["Time","Value"],["08",100],["10",200],["12",300]]

但是,当我尝试以下面的方式从我的数据库创建数组时,我最终会在我推入数组的元素周围加上双引号,并且API将不接受该数组:

WHILE($rows=mysqli_fetch_assoc($result)) {
$time[]=$rows['Time'];
$entry[]=$rows['Entry'];
    };

 $count=count($time);

$newarr=array();
for($i=0; $i<$count; $i++) {
$x="[".$time[$i].",".$entry[$i]."]";
array_push($newarr, $x);
};

array_unshift($newarr, ["Time", "Value"]);

echo(json_encode($newarr));
//result
[["Time", "Value"], "[06:08:00,250]", "[08:08:00,230]"]

是否可以在没有双引号的情况下创建数组或删除它们?

2 个答案:

答案 0 :(得分:3)

您不希望将字符串推送到$newarr,而是一个数组:

$newarr[] = array($time[$i], $entry[$i]);

答案 1 :(得分:1)

当您从数据库中读取数据时,您得到的结果值将始终被视为字符串值。如果您希望json_encode()将其视为整数,则需要在进行编码之前将其专门转换为整数。

您还有另外一个问题,即您尝试通过连接括号来手动构建阵列。在我看来,你需要做这样的事情:

$newarr = array();
$newarr[] = array('Time', 'Value');
while($row = mysqli_fetch_assoc($result)) {
    $newarr[] = array($row['Time'], (int) $row['Entry']);
}

echo(json_encode($newarr));

我还通过直接在$newarr中读取SQL结果来保存一些步骤(和内存)。如果您稍后在代码中确实需要单个$time$entry数组,则可以忽略此操作并按照以前的方式执行此操作。