【发布时间】:2013-11-24 14:02:34
【问题描述】:
仍在为 PHP 和 CSV 文件操作而苦苦挣扎。我会尽量正确地问这个问题,以便我能得到一些帮助。
我有一个包含大约 4000 行/行的 CSV 文件,我编写了这段代码来创建整个 CSV 的数组,并将 CSV 文件的最后一行拉出以在我的脚本中使用。该代码适用于所有这些成功。
// 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 行的大文件,有没有办法在不使用太多内存的情况下做到这一点?
【问题讨论】:
-
既然 $n 保存了行数,为什么 "$i
-
我展示的代码可以完美地获取变量 $new_row,所以没有任何问题 - 我正在寻找在脚本再次运行之前删除最后一行。我假设通过删除 $new_row 可以做到这一点。我将在我尝试删除最后一行的代码上方添加。
-
你的意思是要写一个没有最后一行的Alabama-TEST.csv的新版本?
-
@nrathaus - 是的,这正是我想要做的。