функция SUM не работает с CSV-файлом в PHP

#php #csv

Вопрос:

это снова я. Я сделал свой код , чтобы попытаться сделать свой код для вычисления общей СУММЫ идентификатора, я написал этот код, но часть, в которой я получаю эхо этого $sumArray[$nameEmp] = $itemPacked; я не получаю общую СУММУ, я снова получаю отдельные номера идентификатора . Вместо общего числа 78 и 155 я получаю предметы в 3-й строке.. В чем моя ошибка ….

Заранее спасибо

 <?php
$row = 1;
if (($handle = fopen("packing.csv", "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
        $row  ;
        $startTime          = $data[Start];
        $endTime            =  $data[Finish];
        $itemPacked         = $data[Item];
        $nameEmp            = $data[Employee];
        $startParts         = explode(":", $startTime);
        $endParts           = explode(":", $endTime);
        $startMinute        = (int)$startParts[1];
        $startHour          = (int)$startParts[0];
        $endMinute          = (int)$endParts[1];
        $endHour            = (int)$endParts[0];
        $differenceHour     = ($endHour - $startHour);
        $differenceMinute   = ($endMinute - $startMinute);
        $differenceHour     -= (($differenceMinute < 0) ? 1 : 0);
        if ($differenceMinute < 0) 
            $differenceMinute  = 60;

        $difference = $differenceHour * 60   $differenceMinute;

$sumArray = array();

    if (!isset($sumArray[$nameEmp])) {
        $sumArray[$nameEmp] = 0; // create new entry for nameEmp with balance=0
    
echo  "<br>n". $sumArray[$nameEmp]  = $itemPacked ;// add balance for NameEmp


 $pickedRate = $perMin * $itemPacked;
        $perCal = $pickedRate / $difference *$precentEff;

        echo $nameEmp. "amp;nbsp;amp;nbsp;amp;nbsp;amp;nbsp;" . $itemPacked. "amp;nbsp;amp;nbsp;amp;nbsp;amp;nbsp;" . round($perCal, 0) . "%" . "<br>";
}   

    }
    fclose($handle);

}
?>
 
 Output 
Total for Each ID  ID  Item picked      Perc
40                 11    40             100%
3                  23   32             80%
26                 11    26             65%
12                 11    12             75%
123                23    123            196%

 

Вместо этих выходных данных , которые у меня есть, мне нужен такой вывод

 
Total for Each ID   ID  Item picked      Perc
                    11    40             100%
                    23   32             80%
                    11    26             65%
78                  11    12             75%
155                 23    123            196%


 

Комментарии:

1. Вы воссоздаете $sumArray = array(); все заново в каждом цикле. Переместите это перед циклом while. Также следует отметить: вам не хватает кавычек на ваших первых 4 $data ключах, и если они не определены до этого цикла $perMin и $precentEff не определены.

2. И повторять это внутри цикла while, вероятно, тоже не имеет смысла.

3. @aynber они определены , это не весь код , но когда я переместил $sumArray = массив(); я не получаю итог .

4. Вы изменяете его только в том случае, если он не определен. Таким образом, оно всегда будет равно первому значению.

5. теперь , когда я переместил echo за пределы цикла и переместил $sumArray = массив(); за пределы цикла до того, как я получу .. последние два-это сумма да, но почему я все еще получаю числа из 3-й строки 40 32 66 78 155