簡體   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