首页 > 解决方案 > 在 PHP 中循环 fputcsv 的问题,我该如何解决?

问题描述

我在循环 fputcsv 时遇到问题,我只得到了打开的 packing.csv 文件的最后一行。你认为我做错了什么?我认为 fputcsv 在 while 循环中还是我错了?

$row = 1;
if (($handle = fopen("packing.csv", "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
        $empWroked    = $data[Name];
        $dateWroked    = $data[Dated];
        $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;

        if (!isset($sumArray1[$nameEmp])) {
            $sumArray1[$nameEmp] = 0; // create new entry for nameEmp with balance=0
        }

        if (!isset($sumArray[$nameEmp])) {
            $sumArray[$nameEmp] = 0; // create new entry for nameEmp with balance=0     
        }   

        $dataEff  =  [$empWroked ,   $itemPacked ,  round(($perMin * $sumArray[$nameEmp]  += $itemPacked ) / ($sumArray1[$nameEmp]  += $difference / $precentEff), 2)];

        $out = fopen('packingresults.csv', 'w');

        fputcsv($out, $dataEff , ',', ' ');
    }

    fclose($handle);
    fclose($out);
}

标签: phploopscsv

解决方案


感谢您的大力帮助:) 我找到了答案,它不是 w 或 w+ 或 r+ ,而是 "a" 。我希望这对未来的人有所帮助:)

$out = fopen('packingresults.csv', 'a');

    fputcsv($out, $dataEff );


    }
fclose($out);
fclose($handle);





}


    fclose($handle);
    fclose($out);
}

推荐阅读