首页 > 解决方案 > 如何将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,但它似乎不起作用。

任何帮助表示赞赏。谢谢

标签: phpcsv

解决方案


要更改 CSV 的一个字段,只需分配给该数组元素,您不需要使用任何类型的替换功能。

$data[3] = "500";

fputcsv()用于将一行写入CSV文件,而不是一次写入整个文件。您需要循环调用它。您还需要返回文件的开头并删除旧内容。

fseek($file, 0);
ftruncate($file, 0);
foreach ($toBoot as $row) {
    fputcsv($file, $row);
}

推荐阅读