php - 在 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);
}
解决方案
感谢您的大力帮助:) 我找到了答案,它不是 w 或 w+ 或 r+ ,而是 "a" 。我希望这对未来的人有所帮助:)
$out = fopen('packingresults.csv', 'a');
fputcsv($out, $dataEff );
}
fclose($out);
fclose($handle);
}
fclose($handle);
fclose($out);
}
推荐阅读
- json - 如何保存 json 响应并生成 Excel 工作表
- excel - 来自 Excel 工作表的参考值
- sql - 在 SQL 查询中将 XML 列转换为表数据
- dc.js - 如何使用 geoChoroplethChart 和 dc.js 在 Mapchart 的路径上添加标签或自定义值?
- javascript - 如何使用用户输入生成 .txt 文件
- java - 通过跳过内部循环中的元素来优化冒泡排序
- java - 应用程序运行平稳但构建 peekaboo 集成失败?
- ios - 完成处理程序未处理异步函数
- python - Numpy 数组是可散列的吗?
- typescript - 通过 router.navigate 方法加载组件时未在 NgOnInit 中调用共享服务的方法