我正在尝试使用php/mysql在morrisjs中构建一个图形,并需要输出以下格式的对象。它应该对期间日期进行分组,然后列出它后面的名称以获得匹配结果:
{period: "2019-02-06 12:00:00", shelly: 2147483647, debra: 1240996571, sally: 2147483647, bill: 2147483647, bob: 619685085, jim: 126614618},
{period: "2019-02-06 12:30:00", shelly: 2147483647, debra: 1240996571, sally: 2147483647, bill: 2147483647, bob: 619685085, jim: 126614618},
{period: "2019-02-06 13:00:00", shelly: 2147483647, debra: 1240996571, sally: 2147483647, bill: 2147483647, bob: 619685085, jim: 126614618}PHP:
while ($row = mysqli_fetch_array($poolChart)) {
$chart_data .= "{ \"period\": \"".$row["StatsHistoryTime"]."\", \"name\": \"".$row["name"]."\", \"hashrate\":".$row["hashrate"]."}, ";
}
$chart_data = substr($chart_data, 0, -2);目前,我的输出如下所示
[
{
"period": "2019-02-06 12:00:00",
"name": "shelly",
"hashrate": 2147483647
},
{
"period": "2019-02-06 12:00:00",
"name": "debra",
"hashrate": 1240996571
},
{
"period": "2019-02-06 12:00:00",
"name": "sally",
"hashrate": 2147483647
},
{
"period": "2019-02-06 12:00:00",
"name": "bill",
"hashrate": 2147483647
}
{
"period": "2019-02-06 12:30:00",
"name": "shelly",
"hashrate": 2147483647
},
{
"period": "2019-02-06 12:30:00",
"name": "debra",
"hashrate": 1460613388
},
{
"period": "2019-02-06 12:30:00",
"name": "sally",
"hashrate": 2147483647
},
{
"period": "2019-02-06 12:30:00",
"name": "bill",
"hashrate": 2147483647
}
]发布于 2019-02-07 10:41:06
解决问题的方法是将数据转换为适当的格式(周期的每个值对应一个数组,数组中的其他值是每个name和hashrate的组合),然后可以使用json_encode将其转换为所需的格式:
$chartdata = array();
while ($row = mysqli_fetch_array($poolChart)) {
$period = $row['StatsHistoryTime'];
// have we already got data for this period?
if (($k = array_search($period, array_column($chartdata, 'period'))) !== false) {
// yes, update data for this period
$chartdata[$k][$row['name']] = $row['hashrate'];
}
else {
// no, create a new array
$chartdata[] = array('period' => $period, $row['name'] => $row['hashrate']);
}
}
echo json_encode($chartdata);输出(用于示例数据)
[
{
"period":"2019-02-06 12:00:00",
"shelly":2147483647,
"debra":1240996571,
"sally":2147483647,
"bill":2147483647
},
{
"period":"2019-02-06 12:30:00",
"shelly":2147483647,
"debra":1460613388,
"sally":2147483647,
"bill":2147483647
}
]https://stackoverflow.com/questions/54565346
复制相似问题