删除数组中每个元素两json_encoded双引号


Remove double quotes around each element in json_encoded array

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

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

你不想把一个字符串推到$newarr,而是一个数组:

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

当你从数据库中读取时,你得到的结果值总是会被视为一个字符串值。 如果您希望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数组,则可以按照以前的方式执行此操作。