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

toplamı sana böyle bir şey için sorun deyimi değiştirmek öneririm ilk id –

+1

anlayamıyorum: 'veri' ve 'ay' eklerken aynı olduğu dizi elemanları birleştirme saatlerde. Aşağıdaki çözümlere göz atın – RJParikh

+0

geliyor nasıl sorunuzu – blokeish

cevap

0

Ana fikir budur. Komut dosyası yürütülmediğinden, varsa hata düzeltmelerini yapmanız gerekir. Şerefe.

$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; 
    } 
İlgili konular