从循环查询 PHP MYSQL JSON 合并数组
Posted
技术标签:
【中文标题】从循环查询 PHP MYSQL JSON 合并数组【英文标题】:Merge array from looped query PHP MYSQL JSON 【发布时间】:2021-04-29 02:14:51 【问题描述】:我有 4 个从 php 循环查询生成的表结果 我期待的结果是这样的
|_Number_|_w1_|_w2_|_w3_|_w4_|
| 1 | 1 | 1 | 1 | 1 |
| 2 | 1 | 1 | 1 | 1 |
| 3 | 1 | 1 | 1 | 1 |
| 4 | 1 | 1 | 1 | 1 |
但是查询生成的结果是这样的
|_Number_|_w1_| |_Number_|_w2_| |_Number_|_w2_| |_Number_|_w2_|
| 1 | 1 | | 1 | 1 | | 1 | 1 | | 1 | 1 |
| 2 | 1 | | 2 | 1 | | 2 | 1 | | 2 | 1 |
| 3 | 1 | | 3 | 1 | | 3 | 1 | | 3 | 1 |
| 4 | 1 | | 4 | 1 | | 4 | 1 | | 4 | 1 |
我使用的查询是
$array = array();
$query = "SELECT * FROM weeks"; (inside the table data is w1,w2,w3,w4)
$sql = $db->query($query);
while($row = $sql->fetch_assoc())
$weeks_array[] = $row;
foreach($weeks_array as $key => $value) :
$no = 1;
$weeks = $value['weeks'];
$query2 = "SELECT * FROM weeks_data WHERE weeks = $weeks;
$sql2 = $db->query($query2);
while($row2 = $sql2->fetch_assoc())
$weeks_data['number'] = $no++;
$weeks_data['weeks'] = $row2['weeks'];
$weeks_data['data'] = $row2['data'];
array_push($array,$weeks_data)
endforeach;
$data['rows'] = $weeks_data;
echo json_encode($data);
我一直在尝试使用普通的循环表,似乎我发现更简单的方法是使用 JSON。 但是当生成的 JSON 是这样的时候,我走到了死胡同
number : 1,
weeks : "w1",
data : 1
,
number : 1,
weeks : "w1",
data : 1
,
number : 1,
weeks : "w2",
data : 1
,
number : 1,
weeks : "w2",
data : 1
我需要这样的
number : 1,
w1: "1",
w2 : "1",
w3 : "1",
w4 : "1",
,
number : 2,
w1: "1",
w2 : "1",
w3 : "1",
w4 : "1",
我真的很感谢提供给我的所有帮助和建议。谢谢
【问题讨论】:
【参考方案1】: $weeks_array=array();
$query = "SELECT * FROM weeks"; (inside the table data is w1,w2,w3,w4)
$sql = $db->query($query);
while($row = $sql->fetch_assoc())
$array = array();
$array["w1"] = $row['w1'];
$array["w2"] = $row['w2'];
$array["w3"] = $row['w3'];
$array["w4"] = $row['w4'];
$weeks_array[]=$array;
echo json_encode($weeks_array);
【讨论】:
以上是关于从循环查询 PHP MYSQL JSON 合并数组的主要内容,如果未能解决你的问题,请参考以下文章
从 PHP 查询中获取 JSON 数组后,使用 javascript 将 JSON 数组写入 html 页面
在 PHP 中访问 JSON 数组并发送到 MySQL SELECT
php怎么将mysql查询的数组中 的(数字)字符串类型转为数字类型