2016-04-08 4 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

Ihre Frage nicht verstehen kann, wie –

+1

Summe – RJParikh

+0

in erster id kommt die Stunden hoch. Überprüfen Sie die folgende Lösung – blokeish

Antwort

0

Das ist die Hauptidee. Haben Sie das Skript nicht ausgeführt, so müssen Sie die Fehlerkorrekturen ggf. durchführen. Prost. Zusammenführen von Array-Elementen, wo die ‚Daten‘ und ‚Monat‘ gleich beim Hinzufügen: Ich würde vorschlagen, dass Sie das Problem Aussage etwas ändern wie

$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; 
    } 
Verwandte Themen