gpt4 book ai didi

php - 编写 MySQL 查询以在 PHP 中获取数组组并输出为 JSON

转载 作者:行者123 更新时间:2023-11-29 01:35:13 25 4
gpt4 key购买 nike

我有以下 MySQL 表:

+----+------+-------+--------+-------+-------+
| id | col1 | col2 | col3 | col4 | col5 |
+----+------+-------+--------+-------+-------+
| 1 | a | Cat A | Joe | data1 | data2 |
+----+------+-------+--------+-------+-------+
| 2 | a | Cat A | Carl | data3 | data4 |
+----+------+-------+--------+-------+-------+
| 3 | b | Cat B | Mario | data5 | daa6 |
+----+------+-------+--------+-------+-------+
| 4 | c | Cat C | Philip | data7 | data8 |
+----+------+-------+--------+-------+-------+

我正在构建一个 REST 端点并希望以以下 JSON 格式输出最终结果:

{
"json_data": {
"a": [
{
"Cat A": [{
col3:Joe,
Col4: data1,
col5: data2
},{
col3:Carl,
Col4: data3,
col5: data4
}
],
"b": [
{
"Cat B": [{
col3:Mario,
Col4: data5,
col5: data6
}]
}
],
"c": [
{
"Cat C": [{
col3:Philip,
Col4: data7,
col5: data8
}]
}
]
}
}

正如您从表格和最终 JSON 输出中看到的,我想首先按 col1 对结果进行分组,然后基于 col1 我将按 col2 分组并最终显示剩余数据。

我正在使用 PHP 通过以下代码创建它:

MYSQL 查询:$query = $wpdb->get_results('SELECT * FROM table ORDER BY col2');

PHP 循环和数组:

foreach ($query as $allData) {

$arrayData2[$allData->col2] = array(
'col3' => $allData->col3,
'col4' => $allData->col4,
'col5' => $allData->col5
);
}


foreach ($query as $col2) {
$arrayData1[$col2->col2] = array(
$arrayData2
);
}

foreach ($query as $col1) {
$array1[$col1->col1] = array(
$arrayData1,
);
}

return array(
'json_data' => $array1,
);

结果与预期不符,有人可以指导我做错的错误以达到我的预期结果。

最佳答案

您可以通过简单的 for 循环实现您想要的结果:

$resultArray = [];
foreach ($query as $row) {
$resultArray[$row->col1][$row->col2][] = ['col3'=>$row->col3, 'col4'=>$row->col4, 'col5'=>$row->col5];
}

echo json_encode($resultArray);

关于php - 编写 MySQL 查询以在 PHP 中获取数组组并输出为 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51826638/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com