繁体   English   中英

PHP删除CSV文件的最后一行

[英]PHP to remove last line of CSV file

仍在努力处理PHP和CSV文件。 我将尝试适当地询问这个问题,以便获得帮助。

我有一个约4000行/行的CSV文件,我编写了这段代码来创建整个CSV的数组,然后拉出CSV文件的LAST行以在脚本中使用。 该代码可以使所有这些成功实现。

// CREATE ASSOCIATIVE ARRAY FROM LAST ROW OF CSV FILE
$csv = array();
if (FALSE !== $handle = fopen("Alabama-TEST.csv", "r"))
{
while (FALSE !== $row = fgetcsv($handle))
{
 $csv[] = $row; 
}
}
$new_csv = array();
foreach ($csv as $row)
{
$new_row = array();
for ($i = 0, $n = count($csv[0]); $i < $n; ++$i)
{
$new_row[$csv[0][$i]] = $row[$i]; 
}
$new_csv[] = $new_row;
}

变量$ new_row是CSV中的最后一行,我可以使用数据了。 但是,当脚本运行完毕后,我想删除最后一行称为$ new_row的行。

这是我的CSV文件的俯视图示例;

CITY        ADDRESS        STATE      NAME
Birmingham  123 Park St.   Alabama    Franky

因此,我只想删除最后一行并将标题保留在顶部,以备下次运行脚本时使用。 我已经尝试了3天,试图弄清楚这一点,所以我希望知道他们正在做什么的好心人可以提供帮助。

这是我试图删除最后一行的代码;

$inp = file('Alabama-TEST.csv');
$out = fopen('Alabama-TEST.csv','w');
or ($i=0;$i<count($inp)-1;$i++)
fwrite($out,$inp[$i]);
fclose($out);

由于我正在使用大约4000行的大文件,是否可以在不使用过多内存的情况下执行此操作?

您需要在阵列($ new_csv)和fputcsv上使用array_pop来保存文件:

array_pop($new_csv); // Removes the last element in the array
$out = fopen('Alabama-TEST-new.csv','w');
foreach ($new_csv as $row) { // sorry for writing it badly, try now
 fputcsv($out, $row);
}
fclose($out);

抱歉,我没有测试环境。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM