首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何按匹配日期对mysqli_fetch_array结果进行分组?

如何按匹配日期对mysqli_fetch_array结果进行分组?
EN

Stack Overflow用户
提问于 2019-02-07 10:13:28
回答 1查看 101关注 0票数 0

我正在尝试使用php/mysql在morrisjs中构建一个图形,并需要输出以下格式的对象。它应该对期间日期进行分组,然后列出它后面的名称以获得匹配结果:

代码语言:javascript
复制
{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:

代码语言:javascript
复制
    while ($row = mysqli_fetch_array($poolChart)) {
        $chart_data .= "{ \"period\": \"".$row["StatsHistoryTime"]."\", \"name\": \"".$row["name"]."\", \"hashrate\":".$row["hashrate"]."}, ";

    }
    $chart_data = substr($chart_data, 0, -2);

目前,我的输出如下所示

代码语言:javascript
复制
[
  {
    "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
  }
]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-07 10:41:06

解决问题的方法是将数据转换为适当的格式(周期的每个值对应一个数组,数组中的其他值是每个namehashrate的组合),然后可以使用json_encode将其转换为所需的格式:

代码语言:javascript
复制
$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);

输出(用于示例数据)

代码语言:javascript
复制
[
  {
    "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
  }
]

Demo on 3v4l.org

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54565346

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档