php - fgetcsv 跳过 csv 文件中的空白列并给出偏移错误
问题描述
我有这个脚本,它将数据从file1复制到newFile。在将其复制到新文件之前,我使用索引填写了一些空列(所有行都相同),它给了我一个偏移错误。
例如,我的 file1.csv 看起来像这样
aa,bb,cc,,ee,,, aa,bb,cc,,ee,,, aa,bb,cc,,ee,,, aa,bb,cc,,ee,,,
我希望的输出如下
aa,bb,cc,abcd,ee,,, aa,bb,cc,abcd,ee,,, aa,bb,cc,abcd,ee,,, aa,bb,cc,abcd,ee,,,
由于第 4 列是空的,(检查 file1.csv) fgetcsv 只读取到cc
,因为它在cc
. 所以ee
被跳过了。所以我得到的偏移错误输出是(newFile),剩余的逗号和分隔符逗号也不见了。
aa bb cc abcd aa bb cc abcd aa bb cc abcd aa bb cc abcd
我想用所有逗号分隔的值和所有剩余的逗号创建一个 newFile。让我知道您是否可以通过任何一种方式帮助我。
这是我的脚本
//Open the old file for reading
$file1 = fopen("myfile2.csv", "r");
//Create a new file for writing
$newFile = fopen("$fname", "w+");
while (($row = fgetcsv($file1, 1000)) !== FALSE) {
$var = "abcd";
//insert at 3rd index
$row[3]=$var;
//write data into new file
fputcsv($newFile, array_values($row), ',');
}
fclose($file1);
解决方案
您只输出array_values()
并且只有该数组的前 4 次出现有值,因此它看起来被截断了。我认为整个array_values()
用法不正确,因此将$row
数组输出fputcsv()
如下
//Open the old file for reading
$file1 = fopen("myfile2.csv", "r");
//Create a new file for writing
$newFile = fopen("$fname", "w+");
while (($row = fgetcsv($file1, 1000)) !== FALSE) {
$var = "abcd";
//insert at 3rd index
$row[3]=$var;
//write data into new file
fputcsv($newFile, $row); // <- changed here
}
fclose($file1);
推荐阅读
- .net - 如何检查“非前缀”
- solr - 如何在 Solr Streaming 中使用 Rank over partition by
- python - Azure 函数应用和事件中心消息 - 函数停止工作
- javascript - 解析Xml大文件关闭服务器nodejs
- git - 如何检查 git rebase 发生了什么变化?
- kubernetes - Axon Server 自动缩放拆分/合并延迟
- javascript - 统计并显示网站上的下载次数/按钮点击次数
- javascript - 我希望我的输入连接到要验证的功能
- youtube-iframe-api - Youtube iframe api:与 MediaSession 交互
- c# - 将 .net core 应用程序作为 Windows 应用程序运行并在 Windows 启动时启动