【发布时间】:2016-01-23 13:04:47
【问题描述】:
我有一个带有静态列名的 .CSV 文件。我每天都会收到它,所以我必须每天自动编辑它。
第一行是行名,例如:row1;row2;row3,row4,row5
例如,当我想取消设置“row2”和“row4”时。
如何根据名称取消设置多行?
我找到了一些关于根据行位置删除行或行的教程,但没有什么能完全帮助我。
这就是现在所拥有的:
$inFile = 'original.csv';
$outFile = 'edited.csv';
$delimiter = ';';
$enclosure = '"';
$read = fopen($inFile, 'r');
$write = fopen($outFile, 'w');
if ($write && $read) {
while (($data = fgetcsv($read)) !== FALSE) {
// how to unset multiple row names
fputcsv($write, $data, $delimiter, $enclosure);
}
}
fclose($write);
fclose($read);
另外,我打开原始文件时需要使用分隔符和附件吗?
【问题讨论】:
-
您不会从 csv 中删除行。您只是不将它们输出到新的 csv 文件中。
if (row doesn't contain what I"m deleting) { output row } -
是的,谢谢,我将所有内容都更改为“未设置”而不是“删除”
-
CSV 不是数据库格式,您不能像使用数据库一样使用它。您需要手动编写代码来操作字符串值中的数据。
-
更具体地说,您需要使用
file_get_contents()、file_put_contents()、explode()、implode()和if/then逻辑,更不用说循环了。