【发布时间】:2021-09-17 10:39:35
【问题描述】:
如何格式化下面的代码以在 php while 循环中创建一个用逗号分隔的 json 数组? 返回的 json 似乎无效,无法再次解码
<?php //database config
$rtv = mysqli_query($link, "SELECT * FROM ".$datatable." WHERE productid='".$id."' ");
while($bld =mysqli_fetch_assoc($rtv)){
$date = $bld["timestamp"];
$data = [];
$data[] =[
"requestId" => $requestid,
"Service" => $service,
"Date" => $date
];
echo json_encode($data, JSON_PRETTY_PRINT);
我得到的是
[
{
"Id": "90223-1475789-2",
"Service": "Maintenance",
"Date": "2021-06-30 23:07:15"
}
][
{
"Id": "90223-1475789-2",
"Service": "Maintenance",
"Date": "2021-06-30 23:07:15"
}
]
而不是所需的格式
[
{
"Id": "90223-1475789-2",
"Service": "Maintenance",
"Date": "2021-06-30 23:07:15"
},
{
"Id": "90223-1475789-2",
"Service": "Maintenance",
"Date": "2021-06-30 23:07:15"
}
]
【问题讨论】:
-
在将
[]分配给数据时将其从array([...])中删除。除此之外,您为什么要获得两条记录?您是否在循环中将数组分配给data? -
如果在循环中,可以push记录到数组中:
$data[] = ["Id" => $requestid, "Service" => $service, "Date" => $date] -
@showdev 这对我所拥有的没有任何影响。数组应该用逗号分隔,例如
[{ "id" : "1"}, { "id" : "2"},.....]。 -
@VasilisG。这是正在编写的代码的摘录,我删除了一些部分,因为它们在解决方案中不太重要。 “您是否将数组分配给循环中的数据?”这是什么意思?
-
看起来你在循环中定义并输出
$data。这意味着每个循环都会覆盖之前的$data分配。循环前定义一次,循环后输出。