php - 使用 php 将 mysql 数据转换为带有附加信息的 json
问题描述
代码
<?php
include "dbconfig.php";
include "yrsetup.php";
$tdate='2018-11-19';
$tmarket='sirsi';
$sql="SELECT ALLCODES.NAME AS Type,MIN(LOT1819.RATE) AS
Min,MAX(LOT1819.RATE) AS Max,ROUND(SUM(LOT1819.RATE)/COUNT(LOTNO),0) AS avg
FROM LOT1819
LEFT JOIN ALLCODES ON allcodes.`sw`='IT' AND allcodes.`cd`=APCD
WHERE MRK IS NULL AND DATE1='2018-11-19' AND LOT1819.SW IS NULL GROUP BY
APCD";
$result=mysqli_query($conn,$sql);
$response = array();
$response = array('Date' => $tdate, 'market' => $tmarket);
while($row=mysqli_fetch_assoc($result))
{
array_push($response,$row);
}
$outsidebrace=')';
array_push($response,$outsidebrace);
echo json_encode($response);
//echo json_encode($response);
?>
结果
{"日期":"2018-11-19","市场":"sirsi","0":{"类型":"RASHI","Min":"30358","Max":"32699", "avg":"31505"},"1":{"Type":"BETTE","Min":"21099","Max":"29618","avg":"27110"},"2" :{"Type":"MURI","Min":"23121","Max":"23809","avg":"23465"},"3":{"Type":"KOLE","Min ":"18019","Max":"23558","avg":"21928"},"4":{"Type":"KG","Min":"14199","Max":"22609 ","平均":"19109"},"5":{"Type":"CHALI","Min":"24039","Max":"26488","avg":"25773"},"6":{"Type":"BG","Min" :"16699","Max":"22300","avg":"21109"},"7":{"Type":"11-CHALI","Min":"22720","Max":" 23899","avg":"23512"},"8":{"Type":"KOKA","Min":"11589","Max":"20699","avg":"16902"}, "9":{"Type":"CH.KEMP","Min":"18315","Max":"24079","avg":"21862"},"10":{"Type":" ARAGERE","Min":"22809","Max":"22809","avg":"22809"},"11":{"Type":"KE.BETTE","Min":"23731","Max":"24631","avg":"24128 "},"12":{"Type":"PEPPER","Min":"34699","Max":"34899","avg":"34799"},"13":{"Type": "CHAKRA","Min":"17869","Max":"23119","avg":"20494"},"14":{"Type":"BT RASHI","Min":"26899" ,"Max":"29718","avg":"28431"},"15":{"Type":"MURI BETTE","Min":"21490","Max":"21699","avg ":"21594"},"16":{"Type":"MURI RASHI","Min":"25699","Max":"25699","avg":"25699"},"17":{"Type":"CHURU","Min ":"7299","Max":"18009","avg":"12654"},"18":{"Type":"LA KOKA","Min":"6199","Max":" 9399","avg":"7799"},"19":{"Type":"LA B GOT","Min":"11899","Max":"18499","avg":"15666" },"20":{"Type":"DBL CHALI","Min":"26418","Max":"26418","avg":"26418"},"21":{"Type": “赢了”,“敏”:“14099","Max":"22421","avg":"18260"},"22":{"Type":"S BETTE","Min":"29518","Max":"29518", "平均":"29518"},"23":")"}
这是有效的 json,但我需要以下格式的结果
{
"Date": "2018-11-19",
"market": "Sirsi",
"data": [{
"Type": "RASHI",
"Min": "30358",
"Max": "32699",
"avg": "31505"
}, {
"Type": "BETTE",
"Min": "21099",
"Max": "29618",
"avg": "27110"
}, {
"Type": "MURI",
"Min": "23121",
"Max": "23809",
"avg": "23465"
}, {
"Type": "KOLE",
"Min": "18019",
"Max": "23558",
"avg": "21928"
}, {
"Type": "K.G.",
"Min": "14199",
"Max": "22609",
"avg": "19109"
}, {
"Type": "CHALI",
"Min": "24039",
"Max": "26488",
"avg": "25773"
}, {
"Type": "B.G.",
"Min": "16699",
"Max": "22300",
"avg": "21109"
}, {
"Type": "11-CHALI",
"Min": "22720",
"Max": "23899",
"avg": "23512"
}, {
"Type": "KOKA",
"Min": "11589",
"Max": "20699",
"avg": "16902"
}, {
"Type": "CH.KEMP",
"Min": "18315",
"Max": "24079",
"avg": "21862"
}, {
"Type": "ARAGERE",
"Min": "22809",
"Max": "22809",
"avg": "22809"
}, {
"Type": "KE.BETTE",
"Min": "23731",
"Max": "24631",
"avg": "24128"
}, {
"Type": "PEPPER",
"Min": "34699",
"Max": "34899",
"avg": "34799"
}, {
"Type": "CHAKRA",
"Min": "17869",
"Max": "23119",
"avg": "20494"
}, {
"Type": "BT RASHI",
"Min": "26899",
"Max": "29718",
"avg": "28431"
}, {
"Type": "MURI BETTE",
"Min": "21490",
"Max": "21699",
"avg": "21594"
}, {
"Type": "MURI RASHI",
"Min": "25699",
"Max": "25699",
"avg": "25699"
}, {
"Type": "CHURU",
"Min": "7299",
"Max": "18009",
"avg": "12654"
}, {
"Type": "LA KOKA",
"Min": "6199",
"Max": "9399",
"avg": "7799"
}, {
"Type": "LA B GOT",
"Min": "11899",
"Max": "18499",
"avg": "15666"
}, {
"Type": "DBL CHALI",
"Min": "26418",
"Max": "26418",
"avg": "26418"
}, {
"Type": "GOT BETTE",
"Min": "14099",
"Max": "22421",
"avg": "18260"
}, {
"Type": "S BETTE",
"Min": "29518",
"Max": "29518",
"avg": "29518"
}]
}
我该如何解决这个问题
解决方案
您需要为数据建立一个嵌套数组,此时您将其添加到顶层......
$result=mysqli_query($conn,$sql);
$response = array('Date' => $tdate, 'market' => $tmarket
, 'data' => array());
while($row=mysqli_fetch_assoc($result))
{
$response['data'][] = $row;
}
echo json_encode($response);
因此,在设置初始$reponse
数组时,我添加了一个data
带有空数组的元素。然后在循环中我将新行添加到这个项目(使用[]
而不是array_push()
)。
我也删除了该$outsidebrace
位,因为这不是必需的。
推荐阅读
- lua - 文件:写()错误:“'写'的错误参数#1(字符串预期,得到零)”
- visual-studio-2017 - cshtml is not able to format correctly in VS2017
- delphi - delphi firemonkey add custom font
- java - Convert Binary Text To Tiff Image/PDF in JAVA using JAI
- php - Class 'Mpdf\Mpdf' not found
- python - 使用 python 在 ml-engine 中预测错误
- r - R中带有置信区间图的线性回归预测
- jquery - Xcode WebView 摄像头访问不起作用
- unit-testing - 我将如何在 Kotlin 中对这个函数进行单元测试?
- django - 如何创建由其他属性组成的模型属性