2014-10-07 102 views
1

我一直坚持这一点,并寻求帮助。我相信我需要添加一个额外的循环,或计数器,我只是不知道何时何地:)添加小计PHP foreach循环

我试图完成每个employeeid的现金,CC和总计小计。

foreach ($weekly as $week){ 
     $week_array = getStartAndEndDate($week['week'],$week['year']); 
     if(isset($week['employeeid'])){ 
       echo "<TR>"; 
       if($week['employeeid']!=$tmpEmp){ 
         echo "<TD colspan='5'><strong>".$week['employeeid']."</strong></TD></TR> 
         <TR><TD>".$week_array['week_start']."</TD>"; 
         $tmpEmp = $week['employeeid']; 
       } 
       else { 
         echo "<TD>".$week_array['week_start']."</TD>"; 
         $tmpEmp = $week['employeeid']; 
       }  
       echo 
       "<TD>".$week['CC']."</TD> 
       <TD>".$week['Cash']."</TD> 
       <TD>".$week['total']."</TD> 
       <TD><a href=employee.php?week=".$week['week']."&year=".$week['year'].">Report</a></TD> 
       </TR>"; 


       $tmpCC += $week['CC']; 
       $tmpCash += $week['Cash']; 
       $tmpTotal += $week['total']; 


     }  

} 
       echo "<TR><TD><strong>Group Total</strong></TD> 
       <TD>".$tmpCC."</TD> 
       <TD>".$tmpCash."</TD> 
       <TD>".$tmpTotal."</TD> 
       <TD></TD> 
       </TR> 
       </TABLE><HR />"; 

---当前的结果---

Employee  CC  Cash Total View Report 
1 
2014-10-20  0.00 271.61 271.61 Report 
2 
2014-10-06  75.38 0.00 75.38 Report 
2014-10-13  0.00 472.66 472.66 Report 
4 
2014-09-29  219.39 0.00 219.39 Report 
5 
2014-09-29  0.00 464.40 464.40 Report 
2014-10-20  390.37 0.00 390.37 Report 
Group Total  685.14 1208.67 1893.81 

---通缉的结果---

Employee  CC  Cash Total View Report 
1 
2014-10-20  0.00 271.61 271.61 Report 
Subtotal  XX  XX  XX  
2 
2014-10-06  75.38 0.00 75.38 Report 
2014-10-13  0.00 472.66 472.66 Report 
Subtotal  XX  XX  XX 
4 
2014-09-29  219.39 0.00 219.39 Report 
Subtotal  XX  XX  XX 
5 
2014-09-29  0.00 464.40 464.40 Report 
2014-10-20  390.37 0.00 390.37 Report 
Subtotal  XX  XX  XX 
Group Total  685.14 1208.67 1893.81 

回答

2

到您在留住员工ID的方式类似循环,你可以保持运行总数。

你上面的循环:

$tmpSubTotal = 0; 

$tmpTotal += $week['total'];

$tmpSubTotal += $week['total']; 

和IF语句:

if($week['employeeid']!=$tmpEmp){ 
    if($tmpEmp) { 
     echo '<td colspan="3"></td><td>' . $tmpSubTotal . '</td><td></td></tr><tr>'; 
     $tmpSubTotal = 0; 
    } 

    echo "<TD colspan='5'><strong>".$week['employeeid']."</strong></TD></TR> 
    <TR><TD>".$week_array['week_start']."</TD>"; 
    $tmpEmp = $week['employeeid']; 
} 
+0

感谢您的答复,但它不是安静我在寻找什么对于。结果在第一行显示小计,而最后一位员工没有小计。 - 结果 - http://postimg.org/image/5g3xn7txh/ – elit3x 2014-10-08 00:37:16

+1

我包含的语句('if($ tmpEmp)')试图排除它试图在非常第一行,但我不知道在循环开始之前'$ tmpEmp'的值。它应该设置为虚假或至少是虚假的东西。最后一行是我的错误,您需要在循环之后但在回显分组总数之前包含以下内容:'echo'​​'。 $ tmpSubTotal。 '​​';' – Scopey 2014-10-08 00:41:57