【发布时间】:2018-07-27 23:47:55
【问题描述】:
我有一个名为 employee_data.csv 的 CSV 文件。它包含格式如下的员工记录:
JANE WILLIAMS,6/8/1998,55846874E,4323
PETER JONES,15/01/1982,56897547Q,1234
JAMES O'BRIEN,09/05/2001,25689514W,3432
我想删除 csv 文件中的选定行。为此,我将简单地将 csv 文件中我不想删除的 2 行复制到 new_employee_data.csv 文件并删除旧的。
<?php
$dataSrc = "persistence/employee_data.csv";
$dataDest = "persistence/new_employee_data.csv";
$dataFile = fopen($dataSrc, "r") or die("Unable to open file!");
$outFile = fopen($dataDest, "w") or die("Unable to open file!");
$i=0; //index for the array
while(!feof($dataFile)) {
$csv = fgetcsv($dataFile); //read a line from the CSV file
//$csv = [ANE WILLIAMS,6/8/1998,55846874E,4323];
//add check to remove row
print_r($csv);
if($csv[2] == '55846874E') continue; //skip to next itteration
fputcsv($outFile, $csv);
}
fclose($dataFile);
fclose($outFile);
?>
上面的代码将$dataFile的内容逐行写入$outFile,如果第三列='55846874E',它将跳过写入该行。 csv 数组包含 employee_data.csv 文件中的行。
$csv 数组中的元素如下。
Array ( [0] => JANE WILLIAMS [1] => 6/8/1998 [2] => 55846874E [3] => 4321 )
Array ( [0] => PETER JONES [1] => 15/01/1982 [2] => 56897547Q [3] => 1234 )
Array ( [0] => JAMES O'BRIEN [1] => 09/05/2001 [2] => 25689514W [3] => 8475 )
它删除文件的第一行 - JANE WILLIAMS,6/8/1998,55846874E,4323
现在 new_employee_data.csv 中是两条未删除的记录。
"PETER JONES",15/01/1982,56897547Q,1234
"JAMES O'BRIEN",09/05/2001,25689514W,8475
这正是我想要它做的,但是当我在浏览器中运行它时收到了这个警告:
fputcsv() 期望参数 2 是数组,第 25 行给出的布尔值
fputcsv($outFile, $csv); 有问题,我不知道为什么,有什么解决方法的建议吗?
【问题讨论】:
-
根据 php 文档:
fgetcsv() returns NULL if an invalid handle is supplied or FALSE on other errors, including end of file.这告诉我它很可能已到达文件末尾 -
您好,再次感谢您将这个问题作为一个单独的问题发布,我正在回家的路上,不得不跑步......哈哈抱歉