php - 用 PHP 删除或替换 CSV 文件的最后一行
问题描述
我正在尝试更新 csv 文件的最后一行,使用此代码得到最后一行:
$f = public_path('MYCSV.csv');
$rows = file($f);
$last_row = array_pop($rows);
$data = str_getcsv($last_row);
我搜索了很多,但没有找到任何方法来替换或至少删除 csv 文件的最后一行,如果不使用 foreach 循环会很好,因为文件很大......
解决方案
代码:(我没有要测试的 Laravel,但我使用原始 php 进行了测试)
$f = public_path('MYCSV.csv');
$rows = file($f);
array_pop($rows); // remove final element/row from $array
file_put_contents($f, implode($rows)); // convert back to string and overwrite file
现在,如果您想在文件末尾添加新行,只需将新数据作为逗号分隔的字符串(带有尾随换行符)推送到$rows
数组中。
如果您有一个包含此内容的 .csv 文件:
Sally Whittaker,2018,McCarren House,312,3.75
Belinda Jameson,2017,Cushing House,148,3.52
Jeff Smith,2018,Prescott House,17-D,3.20
Sandy Allen,2019,Oliver House,108,3.48
然后$rows
数组,在array_pop()
调用之后,将是:
array (
0 => 'Sally Whittaker,2018,McCarren House,312,3.75
',
1 => 'Belinda Jameson,2017,Cushing House,148,3.52
',
2 => 'Jeff Smith,2018,Prescott House,17-D,3.20
')
*请注意,换行符在file()
使用时不会丢失——因此不需要“胶水” implode()
。
调用后file_put_contents()
,文件将被覆盖:
Sally Whittaker,2018,McCarren House,312,3.75
Belinda Jameson,2017,Cushing House,148,3.52
Jeff Smith,2018,Prescott House,17-D,3.20
推荐阅读
- linux - 如何从由带有连字符的短语集组成的文件中搜索确切的短语
- javascript - 我们可以使用在回调函数之外定义的javascript变量(回调函数)吗?
- assembly - 编写程序以将字符串中单词的首字母更改为大写字母
- javascript - 不明白 splice 方法在递归调用中如何工作以达到置换目的
- android - 为什么我的构建完成后需要这么长时间?
- javascript - 我无法删除我给容器的类
- c - 在 C 程序中显示错误:警告:指针和整数之间的比较
- amazon-web-services - 在 rails worker 中初始化carrierwave aws凭证
- javascript - NextJS 带我到 404
- sqlite - SQLite - 如果字段匹配,则读取 csv 并更新列