按日期对元素进行分组

时间:2014-02-07 07:02:20

标签: php arrays odbc grouping

我的代码如下:

 for($j=0; $j<=odbc_fetch_row($result); $j++){  


                   $date = odbc_result($result, 'DATE');
                    $A = odbc_result($result, 'A');
                   $B = odbc_result($result, 'B');
                   $C = odbc_result($result, 'C');
                   $D = odbc_result($result, 'D');
                   $E= odbc_result($result, 'E');

                   echo $date." ".$A." ".$B." ".$C." ".$D." ".$E."<br/>";
}
DATE  A  B  C  D  E
20140101 0 8225.12 0 0 0
20140101 18483.28 0 0 0 0
20140101 0 0 12275.49 0 0
20140101 0 0 0 3013.50 0
20140101 0 0 0 0 4552.20
20140102 0 3612.30 0 0 0
20140102 6850.10 0 0 0 0
20140102 0 0 5695.45 0 0
20140102 0 0 0 3291.80 0
20140102 0 0 0 0 2006.20
20140103 0 2684.10 0 0 0
20140103 13342.26 0 0 0 0
20140103 0 0 6981.14 0 0
20140103 0 0 0 3887.93 0
20140103 0 0 0 0 5117.50

如何按日期对元素进行分组,如下所示?

  

日期A B C D E

     

20140101 18483.28 8225.12 12275.49 3013.50 4552.20
  20140102 6850.10 3612.30 5695.45 3291.80 2006.20

2 个答案:

答案 0 :(得分:1)

尝试

$result = array();
 for($j=0; $j<=odbc_fetch_row($result); $j++){
      $date = odbc_result($result, 'DATE');
      $A = odbc_result($result, 'A');
      $B = odbc_result($result, 'B');
      $C = odbc_result($result, 'C');
      $D = odbc_result($result, 'D');
      $E= odbc_result($result, 'E');
      $row = array($date,$A,$B,$C,$D,$E);
      for($i=0;$i<count($row);$i++){
         if($row[$i]>0) {
             $result[$date][$i] = $row[$i];
         }
      }  
 }

请参阅演示here

答案 1 :(得分:0)

您可以直接在mysql查询中执行此操作,假设您的数据模式对于每一行都是相同的意义,a,b,c,d,e中的任何一列都将具有值并将所有0都设置为

SELECT `date`,
       max(`a`) as `a`,
       max(`b`) as `b`,
       max(`c`) as `c`,
       max(`d`) as `d`,
       max(`e`) as `e` 
 FROM `test`
GROUP BY `date`

因此,在执行查询后,您可以按循环获取数据

点击这里

http://sqlfiddle.com/#!2/4952f0/12