php - 如何从 php mysql 获取嵌套的 pojo 结果
问题描述
如何获得像这样的嵌套 pojo 结果,
object
------object
------object
------------object
------array
这是我从某个我忘记的地方得到的,但它没有生成此结果的代码。
{
"success": true,
"counter": {
"pending": 100,
"rejected": 200,
"completed": 300,
"expired": 400,
"total": 3200
},
"pie_statistics": {
"assigned": 120,
"opened": 212,
"in-progress": 100,
"completed": 320,
"done": 433,
"rejected": 111,
"expired": 332
},
"bar_months":[
"jan",
"feb",
"mar"
],
"bar_pending":[
100,
200,
300
],
"bar_rejected":[
140,
220,
340
],
"bar_completed":[
170,
290,
310
]
}
用我这样的代码
<?php
require "connection.php";
$query = "SELECT a.kondisi, k.area, COUNT(k.area) AS carea, COUNT(k.nrp) AS cnrp
FROM tb_absens AS a
INNER JOIN tb_karyawans AS k
ON a.nrp = k.nrp
WHERE a.kondisi = 'Sehat'
GROUP BY k.area";
$data = mysqli_query($conn, $query);
$json_array = array();
while($row = mysqli_fetch_array($data)){
array_push($json_array, array(
"success" => true,
"cnrp" => $row["cnrp"],
"area" => $row["area"],
"kondisi" => $row["kondisi"],
));
}
echo json_encode($json_array);
我的结果是这样的
[
{
"success": true,
"cnrp": "1",
"area": "Administrator",
"kondisi": "Sehat"
},
{
"success": true,
"cnrp": "2",
"area": "AMK CPBP",
"kondisi": "Sehat"
},..
]
是的,我知道这是一个老问题,有很多类似的问题。但我一点头绪都没有。我很感激任何帮助。谢谢。
解决方案
如果要将不同的 json 类型转换为单个 json,可以先拆分查询,然后执行每个查询。要获得这样的嵌套对象结果
"counter": {
"pending": 100,
"rejected": 200,
"completed": 300,
"expired": 400,
"total": 3200
},
尝试执行
while($row = mysqli_fetch_assoc($data)){
$json_arr['counter'][$row['a']] = $row['b'];
}
对于嵌套数组
"bar_months":[
"jan",
"feb",
"mar"
]
用这个
while($row = mysqli_fetch_assoc($data)){
$json_arr2['bar_months'][] = $row_area['months'];
}
并将其合并到单个 json 中,您可以使用
echo json_encode(array_merge($json_arr, $json_arr2));
希望它可以帮助
推荐阅读
- python - 在文件 Dockerfile、docker-compose.yml、python.py 和 shell 之间共享值
- java - 谷歌登录错误代码 10:在 toast 消息中显示
- javascript - 防止从 firebase 获取数据的延迟时间(请检查详细信息以了解清楚)
- laravel - 如何在 Laravel ServiceProvider 上记录更改
- mybatis - 是否使用了 mybatis 方法`BaseBuilder#parseExpression(...)`?
- javascript - React Component Inheritance 使用父方法和子方法
- c# - 如何将具有私有字典成员的类序列化到文件中?
- iis - 尝试运行使用来自本地 IIS 的 swagger 的 .net core api
- git - 使用 GitKraken 克隆存储库时“无法打开 '/etc/gitconfig' - 权限被拒绝”
- sql - 无法将 pyspark 数据帧加载到决策树算法。它说不能使用 pyspark 数据框