2016-04-08 11 views
-4
 
Result from Database 
(
    [ID] => 3167 
    [dataID] => 1 
    [data] => P01273 
    [hours] => 1 
    [month] => 1 

) 
(
    [ID] => 3168 
    [dataID] => 1 
    [data] => P01273 
    [hours] => 1 
    [month] => 2 

) 
(
    [ID] => 3191 
    [dataID] => 2 
    [data] => P01273 
    [hours] => 10 
    [month] => 1 

) 

(
    [ID] => 3196 
    [dataID] => 2 
    [data] => P01273 
    [hours] => 10 
    [month] => 2 

) 
(
    [ID] => 3189 
    [dataID] => 2 
    [data] => P00428 
    [hours] => 22 
    [month] => 2 

) 
(
    [ID] => 3189 
    [dataID] => 2 
    [data] => P004299 
    [hours] => 22 
    [month] => 2 

) 
if month and data are equal then calculate the SUM of hours 
Need Output 
(
    [ID] => 3167 
    [dataID] => 1 
    [data] => P01273 
    [hours] => 11 (adding 1+11) 
    [month] => 1 

) 
(
    [ID] => 3168 
    [dataID] => 1 
    [data] => P01273 
    [hours] => 11 (adding 1+11) 
    [month] => 2 

) 
(
    [ID] => 3189 
    [dataID] => 2 
    [data] => P00428 
    [hours] => 22 
    [month] => 2 

) 
(
    [ID] => 3189 
    [dataID] => 2 
    [data] => P004299 
    [hours] => 22 
    [month] => 2 

) 

+0

は、合計が、私はあなたのような何かに問題文を変更することを示唆している –

+1

を理解することはできません時間を稼ぐ。下のソリューションをチェックしてください – RJParikh

+0

最初のIDで来るかあなたの質問 – blokeish

答えて

0

これが主なアイデアです。スクリプトを実行していないので、もしあればバグ修正をしなければなりません。乾杯。添加しながら、「データ」と「月」は同じマージ配列の要素:

$newarray = array(); // global 

    while($row = mysql_fetch_assoc($result)){ 

     if($idx = isdatasame($row)){ 
      $newarray[$idx]['hour'] += $row['hour']; // add hour to existing record 
     } 
     else{ 
      $newarray[] = $row; // if record not in $newarray add new record 
     } 

    } 

    function isdatasame($row){ 
     global $newarray; 
     for($i=0; $i<COUNT($newarray); $i++){ 
     if($newarray[$i]['data']==$row['data'] && $newarray[$i]['month']==$row['month']) 
      return $i; 
     } 
     return false; 
    } 
関連する問題