0

我正在尝试将数组传递给 GoogleChart 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]"]

是否可以创建不带双引号的数组或删除它们?

4

2 回答 2

3

您不想将字符串推入$newarr,而是推入数组:

$newarr[] = array($time[$i], $entry[$i]);
于 2013-09-20T17:02:49.947 回答
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));

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

于 2013-09-20T17:04:14.710 回答