php - 如何将csv文件列中的所有值更改为特定值php
问题描述
我有一个看起来像这样的 csv 文件(还有更多行):
Jim,jim@email.com,8882,456
Bob,bob@email.com,8882,343
我想要做的是将第四列中的所有值更改456,343
为 500。
我是 php 新手,不知道该怎么做。我努力了
<?php
$file = fopen('myfile.csv', 'r+');
$toBoot = array();
while ($data = fgetcsv($file)) {
echo $data[3];
$data[3] = str_replace($data[3],'500');
array_push($toBoot, $data);
}
//print_r($toBoot);
echo $toBoot[0][3];
fputcsv($file, $toBoot);
fclose($file)
?>
但它打印
Jim,jim@email.com,8882,456
Bob,bob@email.com,8882,343
Array,Array
不是
Jim,jim@email.com,8882,500
Bob,bob@email.com,8882,500
我看过这篇文章,PHP replace data only in one column of csv,但它似乎不起作用。
任何帮助表示赞赏。谢谢
解决方案
要更改 CSV 的一个字段,只需分配给该数组元素,您不需要使用任何类型的替换功能。
$data[3] = "500";
fputcsv()
用于将一行写入CSV文件,而不是一次写入整个文件。您需要循环调用它。您还需要返回文件的开头并删除旧内容。
fseek($file, 0);
ftruncate($file, 0);
foreach ($toBoot as $row) {
fputcsv($file, $row);
}
推荐阅读
- regex - 将日志文件中的正则表达式编译为字典,当日志文件具有新属性时出错
- android - Android,编写一个拍摄照片然后在发布请求中发送该照片的应用程序
- time-complexity - 在 O(1) 中找到二叉树中的前辈
- r - 如何在ggplot2中自定义中间值和最大值的颜色?
- ms-access - 将多个CSV文件导入Access数据库并根据文件名将它们保存到不同的表中
- android - android 的 GeoCoder 类中的 Context 表示什么?地理编码器 coder = new Geocoder(context);
- angular - 如何在 Ionic 3(Ionic、Angular 5)上刷新页面
- excel - 使用 Documents.Open 的宏不返回文档,而是返回字符串。
- mysql - 在 MySQL 中动态制作复杂的折叠
- azure-devops - 构建或测试失败后的 vsts 详细通知