2014-10-07 3 views
1

Я застрял на этом и обратился за помощью. Я считаю, что мне нужно добавить дополнительный цикл или счетчик, я просто не знаю, когда и где :)Добавление промежуточного цикла foreach PHP

Я пытаюсь выполнить промежуточный итог наличных денег, CC и общий для каждого employeeid.

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 

--- Wanted РЕЗУЛЬТАТ ---

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($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

Спасибо за Ваш ответ, но это не успокоит то, что я ищу для. Результаты показывают промежуточный итог на самой первой строке и не являются промежуточным итогом для последнего сотрудника. --Result-- http://postimg.org/image/5g3xn7txh/ – elit3x

+1

Заявление я включил ('если ($ tmpEmp)') пытается исключить случай, когда он пытается напечатать строку на очень первая строка, но я не знаю значения '$ tmpEmp' до начала цикла. Он должен быть установлен как ложный или по крайней мере что-то ложный. Последняя строка была ошибкой с моей стороны, вам нужно будет включить следующее после цикла, но перед тем, как вы эхо сгруппированных итогов: 'echo ''. $ tmpSubTotal. ''; ' – Scopey

Смежные вопросы