从循环查询 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 合并数组的主要内容,如果未能解决你的问题,请参考以下文章

从 MySQL 结果创建 PHP 数组

从 PHP 查询中获取 JSON 数组后,使用 javascript 将 JSON 数组写入 html 页面

在 PHP 中访问 JSON 数组并发送到 MySQL SELECT

php怎么将mysql查询的数组中 的(数字)字符串类型转为数字类型

将数据从 javascript forEach 循环中的 php 数组发送到 ajax 调用的 url

使用 PHP 数组输出 MySQL 查询 - foreach 循环错误“非法偏移”和“无效参数”